DVWA靶场之CSRF(跨站请求伪造)通关
Low:
服务器就看了password_new与password_conf是否相同,没有其他的验证
重新构造一个html页面,(自己假装自己是受害者,ip是靶场ip非本地ip)
1 <img src="http://43.247.91.228:81/vulnerabilities/csrf/?password_new=lcx&password_conf=lcx&Change=Change#" border="0" style="display:none;"/> 2 3 <h3>nothing special</h3>
打开这个页面(在同一个浏览器上),就看到一行字,实际上登录密码已经改成lcx了不信你试试
Medium:
多了一个叫eregi的函数
eregi( $_SERVER[ 'SERVER_NAME' ], $_SERVER[ 'HTTP_REFERER' ]检查$_SERVER[ 'HTTP_REFERER'中是否存在$_SERVER[ 'SERVER_NAME' ],有true 没有false
这次检查了HTTP_REFERER中是否有SERVER_NAME,这俩都是HTTP包头里的东西
那么可以用burp suite抓包,请求包中加一行Referer:http://43.247.91.228:81
这样就满足了要求,执行成功
High:
加入了checkToken,大概是会判断token
应该是不行了,靶机不是我本机,也没有我买的服务器
获取用户token很重要,理想状态是有人去访问我的服务器上构造的一个获得token并向靶机服务器发出修改密码的请求的界面
但往往还会有浏览器跨域保护,靶机和黑客服务器之间跨域了,可能比较难搞
所以应该把相应代码注入到靶机本地服务器,这是仅靠CSRF做不到的
Impossible:
界面直接变了,要输入原始密码
既有PDO防止SQL注入,还有原始密码防CSRF,确实不能再CSRF了