测试SQL注入的字符类型:
若输入1时的结果:
输入1' and '1'=1时,结果:
输入1' and '1'='2时,结果:
则为字符型,可对其进行SQL注入
确定字符型后,可以对Mysql数据库中的某些数据进行查询,甚至在权限较高时可以修改数据库的内容,以下为读取数据库名称的注入(1' union select 1,database() #)
可以看到在返回值中,数据库的名称为“DVWA”,可以根据需要采用不同的SQL语句查询
甚至可以下载数据库中的内容:
对于不能直接在表单输入内容,以及能对特殊字符进行过滤的表单,可以使用burpsuite等抓包工具抓包,对抓包后请求信息修改后放行即可绕过
修改后显示的结果:
还要注意对单引号(')进行转义,如果依旧不能进行可以通过结尾添加#注释掉后面的语句进行尝试
但如果表单的返回信息只有是否两种类型时,就不能依靠盲注的方式了,盲注最简单的方式就是通过猜,比如数据库的长度,之后依靠二分法测试每个字符;
除此之外还可以通过工具的帮助进行盲注,比如使用sqlmap:
输入(python sqlmap.py -u "http://localhost:8066/DVWA-master/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=ee0v1po7g8sduohu10ptjp3fu2" --dbs --batch)
显示:
显示了一些版本信息等,还有下图中的包含数据库名称
当然这只是一些简单的,复杂的注入,可能需要专用的脚本等,这就需要我近一步的学习了。
还有,听了前辈的一句话感觉很有道理,任何漏洞都要切实修复,不要因为有其他防护软件的保护就松懈,系统是一个相关性极高的东西,一个单独微小的漏洞可能和其他漏洞共同造成极大的隐患,只有将及时将发现的漏洞修复才能使系统最安全。