Bugku-論劍場-MISC-snake
Misc-snake
2021年10月20日
17:17
描述:只要技術好,攢夠500分就給flag哦 hint:一定得讓我的Snake吃飽,不然他一不高興會出事的~~~
開始我以為需要修改後臺數據登入賬號就可以,發現並不行,所以施工gui反編譯:
找到被加密後的flag字串:
if (this.score >= 500 &&
this.isshow) {
String flag = "eobdxpmbhf\\jpgYaiibYagkc{";
int key = this.snake.len - this.score;
String xx = "";
for (int i = 0; i < flag.length() / 2; i++) {#前半部分的內容把flag前半部分
char c = flag.charAt(i);#獲取字串
c = (char)(c ^ key);#比方式e^key?假設最後結果第一個字串是f,那麼可以直接f=e^key;求key使用key=f^e即可,解出key=3,ord('f')^ord('e')。
計算前半部分內容:
計算出flag的長度是25,所以flag.len/2是12。接著寫解密指令碼。
xx = String.valueOf(xx) + c;
}
for (int i = flag.length() / 2 + 1; i < flag.length(); i++) {
#取後半部分flag字串p開始,p^key*2得到p對應的解密字串
char c = flag.charAt(i);
#打個比方,將
c = (char)(c ^ key * 2);
xx = String.valueOf(xx) + c;
}
對應的py解密指令碼:
flag{snake_ia_good_game}