GKCTF2021-easycms
知识点概要:目录遍历、任意代码执行、任意文件下载
题目hint:后台密码5位弱口令
首页

根据题目hint,知道有后台,爆破得后台路径/admin.php
弱口令:admin:12356
思路一(目录穿越&任意代码执行)
登录成功后,左侧菜单栏UI→Theme,随便一个主题点击右下角Customize
编辑Header,点击右上角Edit

可以写入php代码,写入<?php phpinfo();?>试试
保存,显示如下,需要创建/var/www/html/system/tmp/saec.txt文件

左侧菜单栏,UI→CMPT→Source List,有个上传功能,随便上传个1.txt(大小不能为0kb)

上传好后,点击右上角编辑

Title文本框填如下内容(../多一层少一层都不行)
../../../../../system/tmp/saec

保存后,再次点击编辑查看,Path已经变成如下图所示,实现目录穿越

再次回到UI→Theme→Customize,按刚才的步骤写入phpinfo代码后,点击右上角Visual Editor

可看到phpinfo已被成功执行

那么同样写入如下代码,查看flag即可
<?php system("cat /flag");?>

思路二(任意文件下载)
左侧菜单栏UI→Theme→Customize,点击右上角Export Theme

随便填,点击保存,会自动下载Theme文件
把下载链接复制出来,theme参数值是base64编码
http://f68d3c85-3d68-46dd-a9c3-702d9b2c43d4.node4.buuoj.cn:81/admin.php?m=ui&f=downloadtheme&theme=L3Zhci93d3cvaHRtbC9zeXN0ZW0vdG1wL3RoZW1lL2RlZmF1bHQvMS56aXA=
解码如下
/var/www/html/system/tmp/theme/default/1.zip
那么修改成/flag的base64编码L2ZsYWc=
http://f68d3c85-3d68-46dd-a9c3-702d9b2c43d4.node4.buuoj.cn:81/admin.php?m=ui&f=downloadtheme&theme=L2ZsYWc=
访问,下载完成后,记事本打开即可看到flag
