攻防世界 RE hackme WP

2021-10-24 01:15:36 字數 1801 閱讀 2163

本題為 xctf 3rd-gctf-2017 的 re, 該題目有一些小坑,特此記錄

拿到題目後反編譯如下:

這是通過字串查詢找到的主方法main:

__int64 sub_400f8e()

v3 = v9 ^ v5;

if( v6 !=((

unsigned __int8)v9 ^ v5)

) v11 =0;

--v10;

}while

( v10 );if

( v11 )

v2 =

sub_407470((

unsigned __int64)

"congras\n");

else

v2 =

sub_407470((

unsigned __int64)

"oh no!\n");

return

0ll;

}

其中:sub_407470為類似於printf的函式

sub_406d90為隨機數生成函式,且seed為固定值

重點是要理解這個函式的邏輯是啥。。雖然這個判斷只取了有輸入字串的10個字元,但是實際上需要輸入的字串是22位(也就是實際上flag有22個char)。。

之後程式會從這裡面隨機選擇乙個數字i,然後從byte_6b4270和輸入的字串中分別取出第i個字元v6和v5,將v5的內容和乙個生成的大數進行異或運算與v6比較。

整體邏輯如上,而且我們發現,這個i具體是多少其實是不需要的,因為這個i是隨機生成的用於檢驗得到的flag的(理解這點後題目就變得十分簡單了),所以我們需要做的時按程式正向邏輯進行爆破或者逆向生成這flag即可。

需要注意的是,雖然很多時候這種類似 unsigned __int8 的資訊會被我們忽略, 但是在本題中它是非常重要的, 它標表示這個數被轉型為8個bit長(也就是只有乙個位元組,剛好是我們ascii表的範圍),故指令碼中我們需要與上乙個0xff

綜上,我們最終的指令碼如下:

cyphered =

[0x5f

,0xf2

,0x5e

,0x8b

,0x4e

,0x0e

,0xa3

,0xaa

,0xc7

,0x93

,0x81

,0x3d

,0x5f

,0x74

,0xa3

,0x09

,0x91

,0x2b

,0x49

,0x28

,0x93

,0x67

]flag =

''for i in

range(22

):v6 = i +

1 v10 =

0 v11 =

0while v10 < v6:

v10 = v10 +

1 v11 =

1828812941

* v11 +

12345

print

("%x"

%(cyphered[i]

^v11)

) flag +=

chr(

(cyphered[i]

^v11)

&0xff

)#注意這個0xff

print

(flag)

總結:

本題中需要注意的有兩點,其一就是對程式邏輯的理解,flag有22位。。 另乙個就是0xff,理解這幾點後做題會順利很多。

攻防世界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...