攻防世界Reverse題目writeup

2021-10-03 08:11:11 字數 2198 閱讀 3719

小白最近做了一些reverse題目,整理整理

import base64

defencode

(message)

: s =

''for i in message:

x =ord(i)^32

x = x +

16 s +=

chr(x)

return base64.b64encode(s)

correct =

'xlnkvmtui1mgxwbzxcfeky+aaxnt'

flag =

''print

'input flag:'

flag =

raw_input()

if encode(flag)

== correct:

print

'correct'

else

:print

'wrong'

import base64

correct =

'xlnkvmtui1mgxwbzxcfeky+aaxnt'

s=''

correct_d=base64.b64decode(correct)

for i in correct_d:

x=ord

(i)-

16 x=x^

32 s+=

chr(x)

print s

執行程式就可得到flag

在ida中開啟程式,將main函式f5檢視偽** sub_4007c0()函式為失敗

根據**知道輸入的password長度應該大於18,即v3>strlen(s)

根據這個知道s應該是v7與v8的異或

對於v7,ll是長長整型,v7要轉換為16進製制然後在轉換為字串,而且字元是小端序,所以把得到的字元翻轉然後和v8的每一位進行異或

mk_fp是乙個巨集。功能是做段基址加上偏移位址的運算,也就是取實際位址。簡單分析程式知道while迴圈計算的應該就是flag,檢視t的值

說明t存放的應該就是flag

我們用python**編寫迴圈過程,輸出得到flag

s=

'c61b68366edeb7bdce3c6820314b7498'

v6=0

v3=0

t='sharifctf'

t=list

(t)//在python中,數字,字串和元組都是不可變物件。列表是可變物件

while v6<

len(s):if

(v6&1)

: v3=

1else

: v3=-1

t[v6+10]

=chr

(ord

(s[v6]

)+v3)

v6 +=1t=

"".join(t)

print t

reverse 練習3 攻防世界 hackme

拿到題,查殼後用ida64開啟。老樣子查詢字串,找到 點選進入,找到交叉函式f5反編譯,由下到上分析,如果要輸出 即v18不為0,即v13 v16 v12,v13可以查到資料,不是flag,v16是整型,也不會是flag,所以猜測v12是我們要求的flag,v12 i v13 i v16就可以求出v...

攻防世界新手區題目wp

雖然是菜雞題目,但俺依然不太會做 上網看了一下wp,就是ida開啟,然後shift f12,搜尋flag ord 的作用是返回字元相應的ascii十進位制編碼,比如ord a 會返回97 另外如果a b ca oplus b c a b c,可以推出來a b b a 0 aa oplus b opl...

攻防世界題目greeting 150

1.printf 函式的格式化漏洞。2.可以通過修改.fini array的內容使得main函式一直迴圈執行。3.printf 格式化修飾符中,hn為word 字 hhn為byte 位元組 n為dword 雙字 lln為qword 四字 1.首先通過printf 函式得到輸入的相偏移。2.得到偏移為...