Natas8 Writeup(常见编码、php函数)
Natas8:
同样给了php源码,审计源码,发现给了一个预设参数encodedSecret,以及一个加密函数encodeSecret, 该函数将secret参数先进行base64编码、然后用strrev 函数进行倒序,再用 bin2hex 函数转为16进制,返回结果。如果点击提交,且post传入的secret 参数值经加密后,等于 encodedSecret 参数的值,则输出flag。至此,只需要将 encodedSecret的值逆推,然后post即可。
$encodedSecret = "3d3d516343746d4d6d6c315669563362"; function encodeSecret($secret) { return bin2hex(strrev(base64_encode($secret))); } if(array_key_exists("submit", $_POST)) { if(encodeSecret($_POST['secret']) == $encodedSecret) { print "Access granted. The password for natas9 is <censored>"; } else { print "Wrong secret"; } }
先把’3d3d516343746d4d6d6c315669563362’从16进制转成字符,然后把该字符串倒序,最后将之base64解码,得到’oubWYf2kBqz',将该字符串post得到flag。
<?php $encodedSecret = "3d3d516343746d4d6d6c315669563362"; $secret = base64_decode(strrev(hex2bin($encodedSecret))); echo $secret; ?>
flag:W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl