针对没有错误回显的网站,我们一般采取盲注(事实上也只学了这个233)
这种网站,如果你输入符合的值,则显示正确,输入不符合的非法数据,则显示错误或没有显示,总之就是没有关于数据库的信息直接利用。
我看到网上好像说盲注有三大类
1.基于布尔型SQL盲注
2.基于时间型SQL盲注
3.基于报错型SQL盲注
首先基于时间的这种其实就是针对web服务器的响应时间来判断你注入的代码是否有被执行。
比如,我们想判断这个数据库的首字母是不是d:
if(ascii(substr(database(),1,1))=100,1,sleep(300))
首先先说明下,if(表达式1,表达式2,表达式3),如果表达式1成立,则执行表达式2,否则执行表达式3。
所以这个语句的意思是,如果该数据库的第一个字母的ascii码是100,那么网页很快就返回结果,如果不是100,那么网页就sleep(300)(停止300s)
而这个布尔就是在选择的时候多加一个判断条件,用and来进行连接。
比如,我们想判断这个数据库名的长度是不是8:
and length(database())=8
注意,这里不能把 and 换成 union select ,若使用union select 则始终会返回1,起不到判断效果。
本文系作者原创,若有错误恳请斧正,不胜感激。