简单版:
1.查看代码:
由代码可知:
代码从表单中获取新的密码信息,对照了两次输入的一致性,
还调用mysql_real_escape_string()函数对其进行了SQL的防护,
但没有对CSRF漏洞进行防护,
同时,我们也可以得知low难度的源代码中,并没有隐藏的token,
2.做法:
(1)我们先尝试着去改密码;发现url上出现了我们改的密码参数:
(2)接下来猜想:
如果直接改变url上的参数,在进行访问会不会修改密码;
根据提示密码已经被修改;
中等版:
1.查看代码:
Medium级别的代码检查了保留变量HTTP_REFERER(http包头的Referer参数的值,表示来源地址)中是否包含SERVER_NAME(http包头的Host参数,即要访问的主机名),希望通过这种机制抵御CSRF攻击。
过滤规则是http包头的Referer参数的值中必须包含主机名(这里是localhost)
我们可以将攻击页面命名为127.0.0.1.html(页面被放置在攻击者的服务器里,这里是127.0.0.1)就可以绕过了
2.执行操作:
因此,用burp抓包发送repeater,将Referer地址改为http://攻击者服务器地址/dvwa/被攻击ip地址.html格式,如图:
高等版:
1.查看代码:
2.代码审计:
由此可知:服务器在接受请求时会检查token;检查token参数是否相同;
3执行操作:
(1)在这理用burpsuite来绕过token
(2)打开插件设置host以及name
(3)发送到repeater,点击go查看,发现密码修改