BUUCTF Reverce 不一樣的flag

2021-10-10 19:22:32 字數 1376 閱讀 9927

查殼:(沒有加殼)

得知這是32bit檔案

int __cdecl main

(int argc,

const

char

**ar**,

const

char

**envp)

else

if( v6 >2)

else

}else

for( i =

0; i <=1;

++i )if(

*((_byte *

)&v8 +

5* v4 + v5 -41)

==49

)// 通過第51行5 * v4,這是乙個5行5列的迷宮(一共25個字元)

exit(1

);if(

*((_byte *

)&v8 +

5* v4 + v5 -41)

==35)}

}

**分析:

檢視**中的_data_start__

.data:

00402000 __data_start__ db '*11110100001010000101111#',0

// 發現一串疑似地圖的字串

又通過第16~ 20行**,第51~ 53行**,我們能夠知道這是乙個迷宮題。

猜想是地圖

『11110100001010000101111#』,就是走出迷宮的地圖。((_byte )&v8 + 5 * v4 + v5 - 41) == 49,((_byte *)&v8 + 5 * v4 + v5 - 41) == 35,中,49對應的ascii值恰好是』1』,35對應的ascii值恰好是』#』,根據演算法的大意,我們就能知道,若最後結果等於』1』,那麼程式會退出,字最後結果等於』#』,那麼相應的我們就得到了我們flag的對應數字順序.也就是說,我們迷宮的終點是』#』,而在這過程中,我們要避開』1』,就這樣走到我們的終點。

把11110100001010000101111#按5x5的順序擺好

從走到# (1看做是障礙物)

*

1111

01000

01010

00010

1111#

fla

不一樣又不一樣的 木板接水

空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...

Lock與synchronized是不一樣的

很多編碼者都會說,lock類和synchronized關鍵字用在 塊的併發性和記憶體上時語義 是一樣的,都是保持 塊同時只有乙個執行緒具有執行權。這樣的說法只對了一半,我們以乙個任務提交給多個執行緒執行為例,來看看使用顯式鎖 lock類 和內部鎖 synchronized 關鍵字 有什麼不同。首先定...

我們不一樣

前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...