逆向20180829

題目:https://pan.baidu.com/s/1WcwrIZiUw3DNclN-J3lxPA
提取碼:le8q

工具:kali ida

題解:
1、elf文件,拖進kali執行一下,權限不夠?chmod 777 re0,
發現關鍵字wrong
2、丟進ida中,shift+F12,鎖定關鍵字所在函數,F5反編譯,由代碼得
①輸入字符串長度14②經judge函數返回爲真
3、
(1)進入judge函數看看,報錯了,是positive錯誤,找到報錯的地方,有提示:sp-analysis failed,在報錯的上一行,alt+k一下,將sp改爲正確的即一致的。F5看看judge怎麼能返回真,
有提示,“本地變量分配失敗,輸出可能出錯!”,
(2)看一下代碼,不正常,看不出判斷與返回,還太短了,可能judge函數下面還有許多字符沒有被譯成代碼,用c解一下。發現有些地方上了鎖似的,解不動啊。
4、怎麼辦,回到主函數那裏,依稀記得主函數有對judge函數進行處理(這很重要,要敏感),judge函數被整個的異或了一下。寫個python腳本異或回來吧。(注:u後綴表示unsigned long,前面0x表示十六進制,十六進制每兩位佔一個字節. ^異或符)

base=0x600B00
for i in range (182):
	addr=base+i
	byte=get_bytes(addr,1)
	byte=ord(byte)^0xC
	patch_byte(addr,byte)

5、跑一下,哇嗚!解得開了,再次查看judge函數,又報錯,“請將光標在一個函數”,哦,他沒將judge函數處理成塊,那我們“p”一下,
這裏寫圖片描述
之後我的ida 'p’不了啊啊啊,學長的明明可以
解決了,‘u’一下judge函數,在‘c’開,再F5就好了
6、之後F5一下,讀一下代碼,嗯,寫個逆算法跑一下就好;

flag_enc="......."
flag=""
for i in range(len(flag_enc)):
	c=flag_enc[i]
	flag+=chr(ord(c)^i)
print flag

知識點:
1、chmod開權限,alt+k解決positive錯誤
2、寫python腳本,逆異或

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章