本次跟师傅们一起冲到了32,相比月初打到50,或许是个大进步,今后也还要继续努力才行。
WEB
simpleflask
不会flask的屑,只会看别人wp然后发现竟然如此简单的five.jpg
直接读flag一把梭
name={{__int__.__globals__.__builtins__.open(“/FLAG”.lower()).read())}}
XWIKI
现成的CVE漏洞,编号:CVE2020-11057,存在python命令执行
利用这个漏洞直接弹shell
阴间文件readflag,进行480+次比大小,比出来就给flag
直接base64 readflag 进行加密显示,然后复制出来解密粘贴为elf文件
反编译即可,发现数据存放在缓冲区
数据是固定的,把二进制提出来转换文字就出了
SSSRFME
ssrf,差一点出,可惜时间不够了
<?php
// ini_set("display_errors", "On");
// error_reporting(E_ALL | E_STRICT);
function safe_url($url,$safe) {
$parsed = parse_url($url);
$validate_ip = true;
if($parsed['port'] && !in_array($parsed['port'],array('80','443'))){
echo "<b>请求错误:非正常端口,因安全问题只允许抓取80,443端口的链接,如有特殊需求请自行修改程序</b>".PHP_EOL;
return false;
}else{
preg_match('/^\d+$/', $parsed['host']) && $parsed['host'] = long2ip($parsed['host']);
$long = ip2long($parsed['host']);
if($long===false){
$ip = null;
if($safe){
@putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
$ip = gethostbyname($parsed['host']);
$long = ip2long($ip);
$long===false && $ip = null;
@putenv('RES_OPTIONS');
}
}else{
$ip = $parsed['host'];
}
$ip && $validate_ip = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
}
if(!in_array($parsed['scheme'],array('http','https')) || !$validate_ip){
echo "<b>{$url} 请求错误:非正常URL格式,因安全问题只允许抓取 http:// 或 https:// 开头的链接或公有IP地址</b>".PHP_EOL;
return false;
}else{
return $url;
}
}
function curl($url){
$safe = false;
if(safe_url($url,$safe)) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$co = curl_exec($ch);
curl_close($ch);
echo $co;
}
}
highlight_file(__FILE__);
curl($_GET['url']);
存在ssrf漏洞,直构筑ssrfpaylod发现存在套娃
http://121.36.199.21:10808/?url=http://root:root@127.0.0.1:5000@baidu.com/
题目hint提示Redis,直接扫描端口发现6379端口开了redis
利用现成的exp打一下就行
https://github.com/n0b0dyCN/redis-rogue-server
最后反弹shell即可
MISC
SignIN
直接把二维码拼一下就行了
GACTF FEEDBACK
老问卷了
Minecraft Redstone Music
这题混了个三血,自吹亿播.jpg
flag总共分为三个部分,配置文件为一部分,游戏内两个部分
外部文件为forge.json
该文件如图所示,存在版本错误
将版本号和size数字拼起来就是
71 65 67 84 70 123 84 104 51
ascii转换为GACTF{Th3
至此,第一部分解决完成
第二部分为游戏内,该部分在音乐启动后中间段一个一闪而过文字便是
至此,获得第二部分
第三部分则需要对游戏进行修复,所以必须要使用整合包进行启动游戏(实际上只要一个工业mod就行了
修复方式:
看一下mod列表
图中三个红框mod为冲突部分,启动器内部关掉就行
启动后提示三个mod缺少前置模组,网上找下来装上就行了
最后启动即可
第三部分:
命令方块下面直接发现石英玻璃
(当然开xray效果更快,我挖了半年才发现
玻璃由石英玻璃和充能石英玻璃组成,xray屏蔽一个然后做方块就行了
最终flag:GACTF{Th3_Mus1c_in_Min3cr4fT}
crymisc
开局一个压缩包,实际上是伪加密,解压后获得3.jpg图片
提取一个crymisc.txt的emoji加密文字,直接爆破解密
trihistory
直接把镜像pull下来,然后在把镜像给给export出来,
倒数第二个解压可以获得layer文件
进入后存在.git文件,使用
git log命令查看历史版本
通过git cat-file -p 不断溯源获得.flag.html.swp
直接cat就行了
Capture
明白是个啥,奈何不会写脚本,算了,直接贴别人的脚本吧(by VN
import re
import numpy as np
import matplotlib.pyplot as plt
X = []
Y = []
c = open("captured.txt", "rb").read()
r = re.compile(rb": ([,UD])(\d+),(\d+)")
res = r.findall(c)
fig = plt.figure(figsize=(200, 20))
ax = fig.add_subplot(111)
for i in res:
if i[0] == b"," and d:
X.append(int(i[1]))
Y.append(int(i[2]))
elif i[0] == b"U":
d = False
ax.plot(Y, X)
elif i[0] == b"D":
d = True
X = []
Y = []
plt.show()
暂无评论内容