RCTFweb复现

文章目录

  • filechecker_mini
  • easy_upload
  • filechecker_plus
  • filechecker_pro_max
  • ezbypass
  • ezruoyi

filechecker_mini

给了附件,代码比较短,先审计一下。
RCTFweb复现_第1张图片

在这里发现了file –b命令,且filepath部分可控,明显的ssti漏洞,没过滤,直接打。

Payload:

#! {{lipsum.__globals__.os.popen("cat /flag").read()}}

RCTFweb复现_第2张图片

easy_upload

先看一下附件,文件上传,但是有过滤。

RCTFweb复现_第3张图片

然后尝试绕过,pHP可以绕过后缀名,然后利用脏数据传进木马。

RCTFweb复现_第4张图片

RCTFweb复现_第5张图片

filechecker_plus

比较第一题是一个升级版,看一下代码哪里改了。

image-20221215135704089

只改了最后的返回方法,ssti漏洞被修复了,然后再来从头看一下代码,发现代码逻辑是先保存文件,然后执行/bin/file,实际上最后是想出来了,但是不知道\r需要删除,还是战队里的大师傅写出来了。

利用python的os.path.join的特性覆盖/bin/file。

RCTFweb复现_第6张图片

filechecker_pro_max

这一个涉及到一个没见过的知识点,首先是/etc/ld.so.preload配置文件可以预加载so,只要在文件内写入so文件位置即可。

那么我们便可以利用LD_PRELOAD劫持了命令执行,首先本地尝试一下。

RCTFweb复现_第7张图片

然后执行gcc命令,成功so文件

gcc -fPIC -shared 1.c -o 1.so

然后再将so文件放入/etc/id.so.preload里

RCTFweb复现_第8张图片

直接命令执行明显会造成堵塞,所以只能设置让其停止的代码,防止其堵塞。

嗯…,搞了个劫持本地复现的时候不小心把虚拟机搞炸了,直接看题目给的靶机吧,思路其实不难,利用竞争,在我们上传so文件成功带还没被删除的同时再上传上/etc/id.so.perload文件,这时再执行file命令的时候便会首先执行我们的写的c脚本里的命令。

同时上传两个文件形成竞争:

RCTFweb复现_第9张图片

RCTFweb复现_第10张图片

LD_PRELOAD劫持成功:

RCTFweb复现_第11张图片

ezbypass

这一题当时被战队的大佬直接拿下二血,我就没再多看,最后来复现一下。

题目给了提示xxe,但从题目名来看还是需要绕过一些限制。

Java題目先不看,审计不下来。

ezruoyi

明显的sql注入,先找注入点。

RCTFweb复现_第12张图片

RCTFweb复现_第13张图片

然后会发现在sql语句进行时有个过滤

RCTFweb复现_第14张图片

利用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;

你可能感兴趣的:(比赛,web安全,linux)