提醒,点击view source 可以查看源码(php)
Brute force
low
直接输入账号和密码(任意),使用burp抓包,并直接发送给intruder。如图所示:
![](https://img-blog.csdnimg.cn/img_convert/ffc120602a7a2b2fa00ee3c5b556f227.png)
先clear所有变量,在add$在需要爆破的字符前后,并且修改Attack type的变量,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/b4627124ba86dc10ee716b7ff4cdd7d4.png)
![](https://img-blog.csdnimg.cn/img_convert/d2e441ef79c42ec9dc42779b8eafb17b.png)
点击payloads攻击池,增加字典,或者手动添加爆破账号和密码,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/d06209f74b405d2b411e665f61f3a5d3.png)
![](https://img-blog.csdnimg.cn/img_convert/85ce5bb4107bfc4fd1884143e038b5fe.png)
点击start attack开始攻击,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/88b8709cbd708212267eb4056f402844.png)
根据爆破出来的字符长度变化获取账号和密码,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/5deb8bc2bcb8ea344d083d509a867915.png)
medium
和low类似,不做演示。需要注意的是中级的暴力破解相对来说较慢是因为有个sleep函数,在破解失败后会使程序停止运行两秒。
high
#账号和密码这里设置的是admin admin
使用burp抓包,发现token,发送给intruder模块,clear清空变量,add$增加要爆破的变量,修改Attack type值为pitchfork,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/bd0df9466c1e2ea66641bfadb3de1850.png)
在options中 找到grep extract,点击add设置如下参数,获取value值,并且复制下来,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/8768051f8af84b89555945357664fc0b.png)
进而在options中找到redirections,修改为always,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/e8dd629cf2ecaca517e6e92c8bae9900.png)
在resource pool中创建新的池,改为单线程,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/7c2f534cdece07fbfe462ef78cbf656c.png)
在payload中设置第一个攻击位,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/29e8a70ad64f56fc56ba4eed50da18c7.png)
设置第二个攻击位,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/7c5c496867eab3c08a232d338672936a.png)
开始强制爆破,出来密码了,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/a3f73bcc9a96c1f4c3fcb99a890caf26.png)
得到登录成功界面,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/885368a46f7adf2d543040e7a71f8d85.png)
Command injection
low
ping 127.0.0.1(回环地址)发现乱码,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/7620e8fc012868248bb8a8d9ec37c47a.png)
找到文件目录(D:\phpstudy_pro\WWW\DVWA-master\dvwa\includes)下dvwaPage.inc.php文件,用记事本打开,并把utf-8替换为gb2312,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/6a683a91722e0a076336530264f65b90.png)
再次ping接,正常了,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/f66e6568d20a2ba56f6c546c38629613.png)
medium
#可以用 & 或 | 绕过
进行简单的ping接,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/5536691371541dbb125818c2935be8d7.png)
![](https://img-blog.csdnimg.cn/img_convert/dd7cb9e46beed4d839767d7e9ac528ab.png)
也可以创建用户,127.0.0.1 | net user abc 123456/add 等等。#关涉到信息泄露,谨慎操作,最好虚拟机。
high
![](https://img-blog.csdnimg.cn/img_convert/b83303bd2b14cfa275fda823a27f6734.png)
![](https://img-blog.csdnimg.cn/img_convert/f69343e59319a13be766b488582a523a.png)
CSRF
low
本意是在网站里更改密码。
更改密码后,得到新的url,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/1ffbfa28522da82f86affc5f27e27228.png)
burp抓包,发现url栏的信息和请求的信息是一致的,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/279cba3788c25221a3da6c45dcc0d94c.png)
修改url值,在新标签页打开,攻击成功了。如图所示:
![](https://img-blog.csdnimg.cn/img_convert/e298410a7345824b2ded86d97cb96b50.png)
medium
源码通过referer进行参数判断,抓包试试,如图所示:
构造页面
本地ip地址,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/e6fb808771ce8375a0caf739a0ae15e2.png)
html页面名字改为网站的ip地址,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/b01732b6de93bf67c2314517ceb5c231.png)
目录,修改后缀名哦,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/fe98fbb7d20ca74415653f114d373110.png)
访问网址Vulnerability: Cross Site Request Forgery (CSRF) :: Damn Vulnerable Web Application (DVWA)/ip地址,并抓包,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/759597611b352a875c244b805fd79105.png)
攻击成功啦,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/2cde04359f17915c1dc45d858703e9fb.png)
high
本质上就是token问题。
输入修改的密码,使用burp进行抓包,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/704a4b44cb1d3aecf67d99e73acfff81.png)
利用medium中的网址进行抓包,添加token,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/3c90e73aebd7d9ba748d3ec1d14ac0a4.png)
得到结果,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/439b27e909ad5c8fd9df7a0ad543dadd.png)
File inclusion
low
点击file1.php,显示page= 文件路径,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/d8a7c962348a7148f3f2eeec75c01f87.png)
访问不存在文件,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/5f1c36e6df888a1dc5f8b54227564049.png)
访问linux系统文件,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/c6879e21146a382df592ca4188b367fc.png)
构建url,http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=D:\phpstudy_pro\WWW\DVWA-master\php.ini如图所示:
![](https://img-blog.csdnimg.cn/img_convert/3cd2e9c0186b697ae6ff1830717f6e86.png)
medium
查看源码发现对http存在过滤,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/817b0fba368f8c844ad01b7908ff8062.png)
远程文件上传目录,通过双写避开,把http改为hthttp即可。
high
存在对关键代码为 使用fnmatch()函数对page参数进行过滤,要求page必须以“file”开头,服务器才会包含相应的文件。如图所示:
![](https://img-blog.csdnimg.cn/img_convert/9a1105e823f531666c5e5ac7647cd846.png)
修改page=file1.php为 page=file://+文件路径,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/4a2ec53094104dd78c4a0f76e8de8cae.png)
File upload
low
分析上传图片,可以使用一句话木马
上传一句话木马,使用burp进行抓包,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/fabdc4c71b2ede961c0a3ce5f37b4038.png)
修改后缀名,png为php,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/26fdf4232133c68f8e3d0dccda4493c8.png)
forword放行获得文件上传路径,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/8024789b3d679ec2bbcc038767fd2815.png)
打开蚁剑,测试连接,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/1b3fc3b18adb0cf68cccbe11135926d1.png)
进一步,就可以得到文件上传成功ok啦,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/db7434b5b875eccd5dcb5b79b6bfa889.png)
medium
// Is it an image?
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
( $uploaded_size < 100000 ) ) {
图片格式必须是jpeg、png,文件要小于100000B!!!
相同步骤,不做演示。
high
// Is it an image?
if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
( $uploaded_size < 100000 ) &&
getimagesize( $uploaded_tmp ) )
查看源码 发现只能上传后缀是 .jpg .png .jpeg 的文件,并且getimagesize(string filename) 函数会读取文件头。
利用文件包含上传就行。
Insecure CAPTCHA
low
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' ];
if( 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' ];
使用burp抓包,修改step=1为step=2,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/d925991776c3727195634b87d387cf20.png)
得到结果成功绕过,修改好密码了,如图所示
![](https://img-blog.csdnimg.cn/img_convert/cf63ec86297abd7c55ff881a65020d6c.png)
medium
<input type=\"hidden\" name=\"passed_captcha\" value=\"true\" />
增加passed-captcha验证,所使用bp进行抓包,修改值,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/7c0acb9fa3b6c40e974d68765dfe68df.png)
得到结果,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/9546d4010e1ef04a9b891a6f3ee739c7.png)
high
<?php
if( isset( $_POST[ 'Change' ] ) ) {
// 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']
);
if (
$resp ||
(
$_POST[ 'g-recaptcha-response' ] == 'hidd3n_valu3'
&& $_SERVER[ 'HTTP_USER_AGENT' ] == 'reCAPTCHA'
)
){
// CAPTCHA was correct. Do both new passwords match?
if ($pass_new == $pass_conf) {
$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() . "' LIMIT 1;";
$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 user
echo "<pre>Password Changed.</pre>";
} else {
// Ops. Password mismatch
$html .= "<pre>Both passwords must match.</pre>";
$hide_form = false;
}
} else {
// What happens when the CAPTCHA was entered incorrectly
$html .= "<pre><br />The CAPTCHA was incorrect. Please try again.</pre>";
$hide_form = false;
return;
}
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}
// Generate Anti-CSRF token
generateSessionToken();
?>
满足三个条件即可跳过验证
验证码为真
g-recaptcha-response为hidd3n_valu3并且HTTP_USER_AGENT为reCAPTCHA
因此,可以利用第二种方法跳过验证。
不做过多演示,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/af8969352166e86c94701d128f7fce7f.png)
SQL injection
low
判断是否存在注入,尝试万能公式1' or 1=1 #,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/9de3a659051586423024b4a2b9a68fd1.png)
判断为字段型注入,查看字段名
-1' union select database(),group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users' #
,进行联合注入爆破库1' union select 1,database()#,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/8d456fbdf28bc4ebbe78679db2c89c35.png)
逐步爆破表·列·内容,如图所示:
-1' union select group_concat(user_id,first_name),group_concat(user,password) from users #
![](https://img-blog.csdnimg.cn/img_convert/b3c446c02d50a26844aef29aabe6e393.png)
根据md5解密得到结果,如图所示:
![](https://img-blog.csdnimg.cn/img_convert/be5bf6d182d93fe0aeb8b28f3e51917c.png)
sql注入中级和高级和初级做法差不多哦!!!!