2024 CISCN WEB 部分wp

很可惜 差一点点解出ezjava 之后花时间好好研究一下 py的栈帧绕过也是完全没见过 学到了很多新东西

又是被二进制爷带飞的两天

image-20240519230610460

Simple_php

1
2
3
4
5
if(isset($_POST['cmd'])){
    $cmd escapeshellcmd($_POST['cmd']); 
     if (!preg_match('/ls|dir|nl|nc|cat|tail|more|flag|sh|cut|awk|strings|od|curl|ping|\*|sort|ch|zip|mod|sl|find|sed|cp|mv|ty|grep|fd|df|sudo|more|cc|tac|less|head|\.|{|}|tar|zip|gcc|uniq|vi|vim|file|xxd|base64|date|bash|env|\?|wget|\'|\"|id|whoami/i'$cmd)) {
         system($cmd);
}

php签到 但是真 的过滤了很多 差点没签到上

escapeshellcmd没见过 看看文档

1
2
3
4
5
6
escapeshellcmd:
(PHP 4, PHP 5, PHP 7)
shell 元字符转义
string escapeshellcmd ( string $command )
escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义;反斜线(\)会在以下字符之前插入: &#;`|*?~<>^()[]{}$, \x0A 和 \xFF;’ 和 " 仅在不配对儿的时候被转义;在 Windows 平台上,所有这些字符以及 % 和 ! 字符都会被空格代替

正常情况下 下面这些关键字 可以直接用‘’去绕过 如l‘’s,但是这些都用不来了

用%0a绕过正则判断

l%0as / 绕过 没看到flag

翻找文档 找到一个函数pr能读文件

102280b40cf08cb415ada88275f494d4

看到存在mysql 猜测是mysql里面 弱密码root/root

用php -r 执行命令

但是() ‘’都没了 只能使用其他方法转换命令字符串

可以使用substr 截断获取字符串

image-20240519232234407

这样确实会抛出警告 但是可以成功rce

查询数据库

7d100c3cd84930def59cac100c873a28

看表

4c7eff281e3de2623c1bb3ea3875cee1

获取flag

40850cac60690cfc767d1a5d64d3b09a

(差点没签上)

easycms

题目给了flag.php 直接能rce 注意到需要本地ip 不能伪造 估计是打ssrf

简单审计下源码

注意到存在一个函数

959c8a4838e84687e5ef50896bb333f5

这里存在ssrf,可以用这个打本地127.0.0.1/flag

找到一个调用的函数

27b304541af180a18ccddd0e05903ff4

可以调用这个函数完成ssrf

构造payload

1
/index.php?s=api&c=api&m=qrcode&text=123&size=1024&level=1&thumb=http://127.0.0.1/flag.php

然而没成功 显示ip被禁止 换个方法 302打一下

b92d6dcf719229e167a6ee97aaea9581

构造302跳转,成功反弹shell

image-20240519232823635

easycms_revenge

和上次的差不多,但是好像加了一个文件头检测

构造302跳转包,一样的payload打不了

起一个服务 加一个图片头

977558271eaad3b73a23e621d1c6efa5

成功302跳转

eb2fc36e201bc9133f45ed94e17e07e0

反弹shell 获取flag

13e65a7f077ac40e471c6e527514fd4a

ezjava(未出)

image-20240519233420852

很熟悉的界面 想到西湖论剑的onlysql了

直接上一手mysql loaddata

读取一个/etc/passwd

60494d2f93c7825baf9d633edbda90e

成功了 直接读取flag,可惜失败了

但是成功读取到/readflag 说明需要rce

d6344a3217273d6cc5ba3f65a598fcc

应该是打jdbc链子 可惜urldns没成功 说明不是这样的

找文章找到了这个连接

编译了一个so文件 然后传上去

但是不知道具体咋操作 没穿 等大佬学习了

欸 还是太菜了 得多花时间学习