re學習筆記(66)第五空間智能安全大賽-re-nop

打開老多花指令
挨個把這樣的替換掉就好了
點擊push的地址,ctrl+c複製。點擊jmp ebp使用插件ctrl+alt+k修改,修改爲jmp <複製的地址>
在這裏插入圖片描述

搜了一下字符串找到輸出正確與否的代碼,發現沒有跳到Right的代碼,,Right上面的那個jmp跳過了他,,,
在這裏插入圖片描述
剛開始以爲是要修改main函數最底部棧頂的數值,讓他等於Right的地址,然後pop ebx賦值給ebx,最後jmp ebx跳轉到Right

調試了半天這裏什麼都沒有!
整個main函數就是對錶面上的,對輸入的數Num+3-0x33333334
在這裏插入圖片描述
調試了好久才確信main函數沒東西,,,
然後看提示錯誤的函數
在這裏插入圖片描述
唯一可以的就是8048691函數了,對result進行一個賦值操作,,,讓他等於144
剛開始外層沒有顯示參數是Num,所以就沒重點關注這裏,,
在這裏插入圖片描述
也就是將Num解釋成地址,將其的一個字節寫入144,轉換爲十六進制正好是0x90也就是nop,,
所以這兩個函數就是將Num的地址的兩個字節改成nop。改完之後如果能出來Right的話
在這裏插入圖片描述

也就是將08048765地址的兩個字節nop掉,jmp就不生效了,就可以運行Right了
在這裏插入圖片描述
也就是Num變換後的值應該等於0x08048765
輸入的Flag+3-0x33333334 == 0x08048765
得到輸入爲993507990
在這裏插入圖片描述
可以看到得到Right(無法運行的直接nop掉main裏的四個函數,eax=1時執行int 80h直接exit了,
在這裏插入圖片描述
flag爲flag{993507990}

想着從1開始爆破來着,不知道爲啥不能分配內存了,(這麼大的數也爆破不出來,,
在這裏插入圖片描述

from pwn import *
i = 0
while True:
	r = process('./nop0')
	r.sendline(str(i))
	fu = r.recvline()
	if 'Right' in fu:
		print(i)
		break
	i += 1
	r.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章