提示されたURLを表示すると次のようにPHPのソースコードが表示されます。babycryptoweb
60
Can you help me recover the flag?
https://babycryptoweb.challs.fireshellsecurity.team/
<?phpパラメータとしてpとbを必要とします。pは数字で$codeの文字列長より小さい値、bは1文字である必要があります。$codeのpで指定された位置の文字をbで指定した文字で置き換えてeval関数で実行します。
$code = '$kkk=5;$s="e1iwZaNolJeuqWiUp6pmo2iZlKKulJqjmKeupalmnmWjVrI=";$s=base64_decode($s);$res="";for($i=0,$j=strlen($s);$i<$j;$i++){$ch=substr($s,$i,1);$kch=substr($kkk,($i%strlen($kkk))-1,1);$ch=chr(ord($ch)+ord($kch));$res.=$ch;};echo $res;';
if (isset(
if (isset($_GET['p']) && isset($_GET['b']) && strlen($_GET['b']) === 1 && is_numeric($_GET['p']) && (int) $_GET['p'] < strlen($code)) {
$p = (int) $_GET['p'];
$code[$p] = $_GET['b'];
eval(
eval($code);
} else {
} else {
show_source(__FILE__);
}
}
?>
$codeを読みやすく記述すると次のようになります。
上記の「+」を「-」に置き換えてみます。$code = '$kkk=5;$s="e1iwZaNolJeuqWiUp6pmo2iZlKKulJqjmKeupalmnmWjVrI=";$s=base64_decode($s);$res="";for($i=0, $j=strlen($s); $i < $j; $i++){$ch=substr($s,$i,1);$kch=substr($kkk,($i % strlen($kkk)) - 1, 1);$ch=chr(ord($ch)+ord($kch));$res.=$ch;};echo $res;';
pに201、bに-を指定してアクセスするとフラグが表示されます。
フラグは、
フラグは、
F#{0n3_byt3_ru1n3d_my_encrypt1i0n!}