1、寻找注入点
初始: 页面无id参数
添加?id=1页面返回正常信息
添加单引号测试,页面报错,可能存在注入漏洞
分析报错:
'LIMIT 0,1
处有错误
此时可能为
select * from table where id = 1' LIMIT 0,1
而'
是我们添加
真正的原语句可能为
select * from table where id = 1 LIMIT 0,1
可控参数没有被引号包围,属于数字型
去掉我们测试的引号,直接用
and 1=1
判断恒真的情况
发现页面正常显示信息
在使用 and 1=2
判断恒假的情况
发现页面无返回信息
此时证明存在SQL注入漏洞
2、开始注入
先使用order by 语句判断当前表的列数
order by 4 语句报错,说明此表小于4列
一般情况下当列数过多时,我们会使用二分法判断列数
即: 假如从10开始判断发现报错 就从5发现报错 就从2发现正常显示信息
就从3发现正常就选4,发现报错说明此表有3列
即折半的思想来提升效率
使用 order by 3
页面正常返回信息
说明此表有3列
接着我们就可以用union联合查询了
因为现在的可控参数是数字型,不需要闭合引号可直接注入
此时更改参数将第一个select语句查询结果为空,在注释掉union查询后面的语句
就可以在union语句上爆出回显点回显数据
这里的注释因为不涉及闭合引号可直接使用–来注释
找到回显点就可以使用相应的Mysql函数查询数据库敏感信息
或者用内置库来查询更多的数据库信息
这里我们使用内置库查出了所有的数据库信息
至此就可以接着查库、查表、查数据了