NaNNaNNaNNaN-バットマン
テストサイト:
- jsコード監査能力
- ポップアップウィンドウのソースコードとページのソースコードの違い、つまり完全なソースコードを取得する機能
知識ポイント:
- 関数document.getElementById( "c")の理解(つまり、指定されたIDを持つ最初のオブジェクトへの参照の値を返します)
- 関数e.match(/ ^ be0f23 /)(つまり、これらの文字がeに存在するかどうかに一致し、一致はtrue、それ以外はnull)
- splice(0,1)関数は、0番目の位置から値を削除することを意味し、値
splice(0,0、 "hello");を増やすこともできます。つまり、0番目の位置にhelloを追加します。
問題解決:
文字化けして実行されるため、
evalをアラートに変更すると、ソースコードが取得されます。
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 _
be0f233ac7be98aa
監査条件の後、つまり、条件が満たされた場合、数回後に関数が実行されます。
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)
}
//因为该代码的完整功能即是用于判断这个按钮的反馈
//因此构建出提交获取的e值be0f233ac7be98aa
取得フラグflag {it's_a_h0le_in_0ne}
PHP2
テストサイト:
- URLエンコーディングの構築
- PHP基本コード監査機能
- パラメータを渡すと、ASCIIの対応する値クラスが再度解析されます。たとえば、%61が渡された場合、すぐにaに解決されます。つまり、実際の入力パラメータは
問題解決:
①ソースコードを入手する
一般的に、ソースコードを取得します
index.php
index.phps(もっとやればわかるでしょう)、つまり、ソース
コードを取得するためのページコード
<?php
if("admin"===$_GET[id]) //即最开始$_GET[id]!=admin,但urldecode编码后是admin
{
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>";
}
?>
したがって、これを取得するためにURLが2回エンコードされていることがわかり
、一般的なASCIIテーブルは次のようになります。
したがって、%2561dminや%2564などを構築できます(つまり、%25は%のエンコードです)。
これにより、index.phpに接続し、 idが
取得されるため、フラグ
cyberpeace {c99b4462f095b1a09c9a6ef6ec1224fe} を取得するように構築されます