菜鸡的自我羞辱
前言
有稍微看了下这个比赛,一眼就不属于我这个水平人做的,稍稍看了一道披着web皮的misc,感觉稍微有点思路,赛后看看大佬们的wp,给自己涨涨见识。
正题
d3readfile(Misc)
老套路先读读/etc/passwd
可以读到
再看看环境变量
发现hint 解码发现提示
提示关键字是locate
看了大佬的wp:locate 命令是查询文件所在位置的,会在本地缓存数据库,文件名为:locate.db,不同版本似乎缓存的目录并不一样
问问chatgpt
不同的linux系统位置不同
- Ubuntu / Debian:/var/lib/mlocate/mlocate.db
- CentOS / Fedora / RHEL:/var/lib/locatedb
- Arch Linux:/var/lib/pacman/local/mlocate*/mtree
- Gentoo: /var/cache/edb/locate.database
- Slackware: /var/lib/slocate/slocate.db
- FreeBSD: /var/db/locate.database
- OpenSUSE:/var/lib/slocate/slocate.db
- Mageia:/var/lib/mageia/mlocate.db
- Oracle Linux:/var/cache/locate/locatedb
最后发现是
1 | Oracle Linux:/var/cache/locate/locatedb |
发现flag路径:opt/vwMDP4unF4cvqHrztduv4hpCw9H9Sdfh/UuRez4TstSQEXZpK74VoKWQc2KBubVZi/LcXAfeaD2KLrV8zBpuPdgsbVpGqLcykz/flag_1s_h3re_233
Get it!
d3cloud(Web)
这题看大佬WP是unzip处命令注入
界面ui什么用都没有 直接进admin后台 /admin
要登陆 admin/admin
发现一个php文件
这里看wp是与官方文档相比多了点代码,那么做这道题还需要现场搭环境和代码审计qwq tql
1 | public function putFileAs($path, $file, $name, $options = []) |
是这里存在命令注入
1 | if($file->getClientOriginalExtension() === "zip") { |
看大佬分析unzip命令如下:
1 | unzip -oq /WWW/d3cloud/storage/app/1.zip -d /WWW/d3cloud/storage/app/ |
然后利用zip文件名写shell
1 | 1;echo bHMgLz4gL3Zhci93d3cvaHRtbC9wdWJsaWMvbHMudHh0|base64 - |
简单解释一下 将ls /
结果重定向到/var/www/html/public/ls.txt
文件中
这里必须有换行符 不然写不进入 估计是代码审计中文件名处有转义或者别的操作 通过换行绕过
还有一个疑问就是写入文件的路径是怎么获取的?是自己搭环境弄到的吗qwq
直接访问ls.txt
继续和上面一样的操作
1 | 1;echo Y2F0IC9mbDFBZz4gL3Zhci93d3cvaHRtbC9wdWJsaWMvZmxhZy50eHQ=|base64 - |
小总结一下:
很多难题还是需要获取到相关版本后,需要自己本地搭建去调试,才能慢慢发现漏洞
代码审计能力很重要qwq
尾巴
其他的wp都看不懂 还是慢慢来吧
看了一下这种真正难的ctf 大大的寄写在我脸上