打開網頁有如下代碼:
<?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;$_c=chr($__);$_=$_.$_c; } return str_rot13(strrev(base64_encode($_)));
}highlight_file(__FILE__);
/*逆向加密算法,解密$miwen就是flag
*/
?>
思路:
根據題意:
加密過程沒有調用minwen?,那是不是直接把值代入minwen?,那是不是直接把值代入minwen?,那是不是直接把值代入str進行加密?
編寫代碼使得
字符串經過for循環
加密: return str_rot13(strrev(base64_encode($_)));
結果再進行Base64,反轉,Rot13:
??flag還不正確?????????????
正確解法:
不對不對,根據提示應該是逆向這個加密算法,把結果往回逆推
邏輯是:先rot13,反轉,base64加密,for循環
<?php
$a="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$a=str_rot13($a);
$a=strrev($a);
$a=base64_decode($a);
function decode($str){$b="";for($test=0;$test<strlen($str);$test++){$b=$b.(chr(ord($str[$test])-1));}return $b;
}
echo strrev(decode($a));?>