writeup
ida開啟檢視,可以看到使用了ollvm中的一種**保護方式——控制流平坦化。在ida反彙編上顯示出來就是使用while+switch的形式,經過平坦化之後的**塊大部分整齊地堆積在程式流圖的下方,而這部分**就是真正有意義的**塊,稱之為相關塊。
具體指令碼編寫思路可參考:
或者直接網上找指令碼(需要安裝angr):
指令碼解完後,main函式裡已經能看出大概邏輯了,不過仍有大量的while ture和不透明謂詞,需要再寫指令碼處理這些虛假控制流,
具體符號執行指令碼編寫思路可參考:
我這裡就針對題目簡單寫個ida指令碼,由除錯這些可以知道,紅框部分的判斷恒為false,所以有大量**塊永遠不會執行到,把這些不會執行到的**塊nop掉,條件判斷的jnz改jmp。
我這裡ida是7.5版本,和之前版本有些api函式變化,可參考官網:
幾個注意點:
這裡jnz操作碼是0f 85,修改成jmp的e9後,需要再修改偏移量,jnz這條指令長度為6,jmp長度為5,需要把addr+5處nop掉。
jmp偏移量=目標位址-(當前位址+當前指令長度)
只是要ida能f5反編譯結果的話,修改好jnz成jmp就好了,那些不可達**塊不nop掉無所謂
ida指令碼如下
defview codenextaddr(addr):
return addr+get_item_size(addr)
st=0x400620ed=0x4020c7addr=st
while addr
if"ds:dword_603054"in
generate_disasm_line(addr,0):
while
true:
addr=nextaddr(addr)
if"jnz"
ingenerate_disasm_line(addr,0):
dest=get_operand_value(addr,0)
offset=dest-(addr+5)
patch_byte(addr,0xe9)
patch_byte(addr+5,0x90)
patch_dword(addr+1,offset)
break
if addr>=ed:
break
addr=nextaddr(addr)
再f5就能看到較清晰的**邏輯了,對輸入的字串,分成6組,每組8個字元,
解密指令碼如下:
s=[0xbc8ff26d43536296, 0x520100780530ee16, 0x4dc0b5ea935f08ec,0x342b90afd853f450, 0x8b250ebcaa2c3681, 0x55759f81a2c68ae4]在原來的數左移一位之後,結果最後一位必然是0,如果原來的數大於0,那一次處理的結果最後一位必然是0。如果原來的數小於0,則在進行一步和0xb0004b7679fa26b3異或,異或後最後一位必然是1。所以可以根據結果的最後一位是1還是0,判斷原來數是否小於0。如果小於0,負數右移一位會溢位成正數,在加上0x8000000000000000才能得到原來的數。res=""
key=0xb0004b7679fa26b3
for item in
s:
for j in range(64):
f=item&1
if f==1:
item=(item^key)//2item = item | 0x8000000000000000
else
: item=item//2n=hex(item)[2:]
(hex(item))
for j in range(len(n)-1,-1,-2):
res += chr(int("
0x" + n[j-1:j + 1], 16))
print(res)
得到flag
攻防世界mfw 攻防世界 Web mfw
題目資訊 image.png 工具 githack,dirsearch 知識點 git漏洞 審計 開啟題目場景,檢查 發現這樣乙個頁面 image.png 訪問.git目錄,疑似存在git原始碼洩露 image.png 再用dirsearch掃瞄,發現git原始碼洩露 使用 githack獲取原始碼...
攻防世界Web lottery
開心!雖然第一次遇到git原始碼洩露寫了好久,但是寫出來了就很開心 開啟介面我們知道,要拿到flag,就要贏到足夠的錢,其實一開始我以為可以找到乙個地方直接修改餘額什麼的,把網頁源 中的檔案看了幾個都沒發現突破口 然後又沒思路了 嘗試了一下robots.txt,想看看有沒有什麼檔案,然後發現了 瞬間...
攻防世界 xctf Guess writeup
本題的解析官網上有,這裡是乙個自動化的指令碼,完成的是自動上傳乙個ant.jpg的檔案 ant.jpg是乙個ant.zip壓縮包重新命名的檔案,裡面是乙個ant.php的一句話木馬 執行返回的是在web後台這個檔案重新命名後的檔案的url。可通過zip偽協議訪問這個木馬。指令碼如下 import r...