文章目录
- filechecker_mini
- easy_upload
- filechecker_plus
- filechecker_pro_max
- ezbypass
- ezruoyi
filechecker_mini
给了附件,代码比较短,先审计一下。
在这里发现了file –b命令,且filepath部分可控,明显的ssti漏洞,没过滤,直接打。
Payload:
#! {{lipsum.__globals__.os.popen("cat /flag").read()}}
easy_upload
先看一下附件,文件上传,但是有过滤。
然后尝试绕过,pHP可以绕过后缀名,然后利用脏数据传进木马。
filechecker_plus
比较第一题是一个升级版,看一下代码哪里改了。
只改了最后的返回方法,ssti漏洞被修复了,然后再来从头看一下代码,发现代码逻辑是先保存文件,然后执行/bin/file,实际上最后是想出来了,但是不知道\r需要删除,还是战队里的大师傅写出来了。
利用python的os.path.join的特性覆盖/bin/file。
filechecker_pro_max
这一个涉及到一个没见过的知识点,首先是/etc/ld.so.preload配置文件可以预加载so,只要在文件内写入so文件位置即可。
那么我们便可以利用LD_PRELOAD劫持了命令执行,首先本地尝试一下。
然后执行gcc命令,成功so文件
gcc -fPIC -shared 1.c -o 1.so
然后再将so文件放入/etc/id.so.preload里
直接命令执行明显会造成堵塞,所以只能设置让其停止的代码,防止其堵塞。
嗯…,搞了个劫持本地复现的时候不小心把虚拟机搞炸了,直接看题目给的靶机吧,思路其实不难,利用竞争,在我们上传so文件成功带还没被删除的同时再上传上/etc/id.so.perload文件,这时再执行file命令的时候便会首先执行我们的写的c脚本里的命令。
同时上传两个文件形成竞争:
LD_PRELOAD劫持成功:
ezbypass
这一题当时被战队的大佬直接拿下二血,我就没再多看,最后来复现一下。
题目给了提示xxe,但从题目名来看还是需要绕过一些限制。
Java題目先不看,审计不下来。
ezruoyi
明显的sql注入,先找注入点。
然后会发现在sql语句进行时有个过滤
利用select%09绕过其过滤
payload:
sql=create table ff12333331 select%09extractvalue(1,concat(0x7e,substr((select%09flag from flag),1,15),0x7e,database())) as fm from flag;