閑的沒事去刷了一下攻防世界做了一道web逆向(?????)
打開題目得到原始碼:
1 <?php 2 $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; 3 function encode($str){ 4 $_o=strrev($str); 5 // echo $_o; 6 7 for($_0=0;$_0<strlen($_o);$_0++){ 8 9 $_c=substr($_o,$_0,1); 10 $__=ord($_c)+1; 11 $_c=chr($__); 12 $_=$_.$_c; 13 } 14 return str_rot13(strrev(base64_encode($_))); 15 } 16 17 /*highlight_file(__FILE__);*/ 18 /* 19 逆向加密演算法,解密$miwen就是flag 20 */ 21 ?>
搞得跟真的一樣,,,于是去問(調戲)了一下20000s師傅

分析一下代碼:顯然$miwen是由下面的function encode加密成的,原文就是flag,所以我們要去把原文逆出來,
實際上encode的程序十分簡單:
將原文反轉,每個字符替換成該字符ascii??的下一個字符,經過str_rot13,再次反轉,base64加密之后得到,所以我們根據這個程序給出exp:
1 <?php 2 $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; 3 $miwen = str_rot13($miwen); 4 $miwen = strrev($miwen); 5 $miwen= base64_decode($miwen); 6 function encode($str){ 7 $_o=strrev($str); 8 // echo $_o; 9 10 for($_0=0;$_0<strlen($_o);$_0++){ 11 $_c=substr($_o,$_0,1); 12 $__=ord($_c)-1; 13 $_c=chr($__); 14 $_=$_.$_c; 15 } 16 return $_; 17 } 18 echo encode($miwen); 19 ?>
最終得到了flag:flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/235277.html
標籤:其他
