type
status
date
slug
summary
tags
category
icon
password
今年题目质量还不错,竟然还有内网渗透部分,2333,因为平常CTF比较少
毕设刚好是做代码审计相关的,刚刚好又在 POP链这个题用上了,还挺开心~
0x1 Hard_Penetration
by Challenger
发现这是 shiro n day漏洞
顺便写了个内存马
连上去发现权限比较小,需要提权
然后尝试了 msf自带的,无果
尝试
linux-exploit-suggester
The-Z-Labs • Updated Aug 30, 2023
Linux_Exploit_Suggester
InteliSecureLabs • Updated Aug 30, 2023
无果
有点像mysql udf 提权,不过不知道用户名和密码
源码包也找不到
看了下 flag 是
www-data
权限,本机可能还有服务,扫了一下发现在 8005端口,然后代理转发出来(转发过程可参考 0x4 EasyWeb 的端口转发过程)报错发现是 thinkphp 3.1.3,然后链接显示去 baocms
审计走起
看了下,大概路由和控制器的对应关系如下
- http://119.23.55.232:670/wap/ 前端就在 themes/Wap/ 里找,后端方法在/Lib/Action/Wap 里找,和URL对应就好
- 同理 http://119.23.55.232:670/admin/ 前端就在 themes/Admin/ 里找,后端方法在/Lib/Action/Admin 里找
- 然后后端方法的 xxxxAction.class.php 中的 Action.class.php 应该是其的加载规范,这个和laravel有点像
等wp吧。。。
还是没找到漏洞点。。。
#更新
赛后和xlw师兄交流了一波,发现漏洞点在
额,完全看不出来。。控制器太多了,,有点难看不出来,太菜了(
0x2 pop_master
by tari
index.php 代码
明显的反序列化,但看
class.php.txt
后发现很乱。很多链是混淆的,有的是会覆盖值的,导致链就算构造了也无法进行反序列化
根据如下4点思路去过滤
- eval 没被引用,过滤
- for 循环中会覆盖传入参数值,过滤
- eval 前会覆盖值参数值,过滤
- 除了入口函数外,其他函数只被引用一次的,过滤
第2和3会覆盖值的是重点,第1和4,一次性过滤多点加快收敛速度(节约下一次运行脚本时间)
编写脚本如下,根据 AST 去剪切不需要的节点(即根据上面4点去除无用或会影响结果的函数)
之所以用 AST 是因相比正则或其他更能精准的剪切节点,PHP AST库传送门。
$entryFunc
入口函数名称,根据实际情况来,即 index.php 里调用的函数$class->NGPaqV($b);
- PHP运行内存默认是 128M,在解析18w行代码会因内存不足退出,我这里php.ini 增加到 8196M
多运行几遍上面代码,大概15次左右,大概消耗20分钟左右,就会显示过滤完成了,即
total filter: 0 function
。(脚本还可以改进,例如把没用的类也去掉)去除完后,搜索发现就只有一个 eval,接下来反过来跟这条链即可~
构造 POP链如下
还有多余的字符拼接在我们可控字符的后面,因最终是
eval
转换为代码,通过注释去掉即可即可获得flag
0x3 (部分)WhereIsUWebShell
赛后和xlw师兄交流了一波,表示学到了~!
先贴贴原题代码
简要分析一下,存在以下几个文件
- index.php 入口,也是反序列化点,不过存在正则
preg_match('/myclass/i',serialize($res))
需要绕过
- myclass.php 文件读取点
- function.php
__autoload
魔术方法文件,当实例化一个类时候,如new myclass();
然后找不到这个类时,会调用这个魔术方法,本题表现为包含某个文件。
- e2a7106f1cc8bb1e1318df70aa0a3540.php 应该是提示之类的
这里正则绕过的思路很巧妙,表示学到了!
首先,如果没有反序列化
myclass
类,就因没包含 myclass.php
文件,进而导致利用不了 Hello
类观察
index.php
代码可知,首先是反序列化 Cookie
里的序列化数据,然后在序列化刚刚反序列化的数据。这里看似,,好像无法修改,但仔细想想,PHP里有没有什么数据结构,会先天性存在,写入同一个位置会存在覆盖关系的,就豁然开朗了!没错,就是,数组,只要反序列化数组,都在数据的同一位置,反序列化时,反序列化数组的第一个位置是
myclass
类,就会包含 myclass.php
,然后同一第一个位置也是 Hello
类,那么就会覆盖第一个位置的 myclass
类,但此时 myclass.php
,已经包含进来了,那么 Hello
类自然也能正常被反序列化了构造 POC
就绕过去了
6月24日更新
从Nu1L的wp中看到的另外一种绕过方法,POC如下
即去除了序列化后数据最后一个花括号,能正常反序列化,但因序列化数据最后一位有误,
unserialize
执行出现异常, $res
为 false
,所以绕过了正则表达式本地中
e2a7106f1cc8bb1e1318df70aa0a3540.php
文件内容为正常读取文件内容
0x4 [强网先锋]赌徒
by tari
目录爆破 -> www.zip
调用逻辑为,反序列化调用
Start
类的 __wakeup
魔术方法 -> 调用 $this->_sayhello();
,里面有 echo,可以触发 Info
类的 __toString
魔术方法,然后 Room
类无 ffiillee['ffiilleennaammee']
属性,进而触发 __get
魔术方法,最好先构造后 Room
类 $a
成员为 Room
对象即可(这里的坑为 $a
成员的 Room
对象不能在构造方法里构造,否则因这三个类相互调用而报错)构造 POP链
注意这个 hi,不是base64编码后的,注意去掉~
得到flag
0x5 [强网先锋]寻宝
key1
by tari
- 数字大于 1026即可
- 科学计数法绕过
- 跑一下脚本即可
- 浮点数绕过
- 让json解析失败即可
key1
KEY1{e1e1d3d40573127e9ee0480caf1283d6}
key2
challenger 来了句,有没有可能直接在文件里呢?
脚本安排上
key2
KEY2{T5fo0Od618l91SlG6l1l42l3a3ao1nblfsS}
提交两个key即可获得 flag
0x6 EasyWeb
by challenger
目录爆破 -> /hint
访问一下得到提示
尝试扫描 35000-40000端口
访问发现是个后台
貌似存在sql注入
sqlmap还可以直接跑出来
帐号密码 admin/99f609527226e076d668668582ac4420
暂时没找到 ssrf 点在哪
不过找到一个文件上传点
过滤了一些字段,不过可以字符串拼接
whoami 是 www-data 然后flag没权限
查看提示
mysql 限制了文件的读取位置
这里直接写入webshell不知为何无法写入成功,因此在写入了 system 命令下,把webshell进行编码在写入
然后看下端口,一个个试试
在 8006 发现 Jboss,端口转发出来
为了上传下载文件稳定性,这里用 msf进行(reGeorg 可能环境原因连不上)
生成马
msfconsole上监听
把生成的马上传上webshell,然后运行
在反弹回来的meterpreter上进行端口转发
可正常访问,并且得知为 JBoss 4.0,有个反序列化漏洞。
访问如下链接,确实可以利用
使用jexboss利用