WMCTF2020 web之web_checkin
这道题是自己没有做出来,当时也没有认真做,最后看看来NU1L的wp才知道思路。
NU1L真的太强了,向他们看齐!!!
题目:web_checkin
//PHP 7.0.33 Apache/2.4.25
error_reporting(0);
$sandbox = '/var/www/html/' . md5($_SERVER['REMOTE_ADDR']);//remote_addr代表客户端的IP
@mkdir($sandbox);//创建一个文件
@chdir($sandbox);//进入这个文件
highlight_file(__FILE__);
if(isset($_GET['content']))
{$content = $_GET['content'];if(preg_match('/iconv|UCS|UTF|rot|quoted|base64/i',$content))//没有弄明白这里是为什么?die('hacker');if(file_exists($content))//file_exists() 函数检查文件或目录是否存在。require_once($content);file_put_contents($content,'.$content);//file_put_contents() 函数把一个字符串写入文件中。
}
他们是wp就一句话:?content=/flag
难道flag在根目录下面?
于是自己搭建环境测试确实可以获得flag,(使用绝对路径获得,这样可以避免进行修改,但是也应该是没有权限写入吧?)
先放着这里,过几天官方出wp在想一想吧!
想法
结合这个题,我想到了file_exists()函数可能存在绕过,这个例子来源于网络。
highlight_file(__FILE__);
$file=$_GET['file'];
//file_exists这个函数允许传入的路径中含有特殊符号
if(file_exists($file)){
echo "hacker!!!";
}else{
include($file);
}
?>
//flag.php
flag{nice_to_meet_u0}
正常输入如果文件存在就会输出hack!!!
使用我们可以构造一个系统没有的文件夹然后…/绕过来绕过。
payload:
?file=./nice/../flag.php
这个思想来自DASCTF7月的比赛
题目链接
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
