拿到乙個re1.exe。
開啟執行之後:
隨便輸入乙個」flag」:
慣例ida pro開啟看,從函式裡邊有乙個start開始分析,走了幾步發現有點亂.
(對pe不太熟悉,還沒有補pe的知識。。只是臨時拿到這麼乙個題目直接做,所以一開始猜了一下start是入口,不知道對不對,我也沒管。。就跟了一下)
並沒有找到什麼有意思的東西。
想到開啟之後的提示,中文搜尋我怕會有編碼問題,於是搜dutctf好了,
ida -> search -> text
搜尋dutctf:
找到引用的位置,進入:
這裡應該就是出現提示開始的邏輯了
從函式看,每一次呼叫sub_40127b都先push乙個字串,這應該是乙個輸出的函式,而sub_4010d1,push了eax和乙個字串」%s」,push eax
之前的lea eax, [ebp+var_24]
決定了其實是將ebp+var_24的位址壓入棧內,然後將%s壓入棧內,呼叫sub_4010d1。%s明顯是乙個佔位符,這裡應該是乙個輸入的函式,根據之前的「輸入flag吧:」這個字串也可以推斷出來。那麼這裡輸入的應該就是ebp+var_24這個位置了。
現在我們知道了[ebp+var_24]是我們輸入的字串的offset,然後根據ida的graph view,從」flag get」開始分析。
從含有」flag get」的字串從下往上分析,在loc_40108d這裡,如果test eax, eax
的結果為0則跳到flag get,所以需要eax為0,loc_401088這裡,or eax, 1
所以eax一定不會為0,只能走loc_401084這條線,看到xor eax, eax
就知道走對了,這句話的意思是把eax 清零(自己和自己異或得0)。再往上看,有兩個都可以走到loc_401084,先看右邊,需要dl為0,再向上看,需要dl和[eax+1]相等,而dl是[ecx+1],換句話說,[ecx+1]和[eax+1]相等才可以。另外一邊,dl為0就可以了,如果dl不為0則需要[eax+1]和[ecx+1]相等。往上看loc_401068,是比較[ecx]和[eax],如果相等才能看dl是不是0,即[ecx]是不是0。
這一段的邏輯總結出來就是:
比較[ecx]和[eax],相等的話,如果[ecx]是0,則到」flag get」,否則還需要[ecx+1]和[eax+1]相等才到」flag get」
那麼[ecx],[eax],[ecx+1],[eax+1]怎麼得到呢?
回到輸出提示處,最後的
lea
eax, [ebp+var_24]
leaecx, [ebp+var_44]
告訴我們eax就是[ebp+var_24]的位址,[eax]就是其值
ecx就是[ebp+var_44]的位址,[ecx]就是其值
[ebp+var_24]通過之前的分析我們知道,這是我們輸入的字串,
[ebp+var_44],高亮一下,
可以看到是
movdqu
xmm0, ds
:xmmword_413e34
和movdqu
[ebp+var_44], xmm0
這兩句生成的。
也就是說,用來和我們輸入的字串比較的就是這個ds:xmmword_413e34了。
跳轉到這個神秘的413e34,發現是一串數。
這串數什麼意思?
就這麼看,看來是看不出來了,但是做過ctf的應該對一段16進製制的數字都有一定的感覺吧,感覺如果沒有加密,那就是ascii,unicode之類的。於是開啟hex view
這裡就出現了flag啦
西普部分CTF題目(web)(持續更新)
id 0 ununionion seselectlect 1,username,userpapassss ffromrom aadmindmin limit 0,1 23 xue flag is simctf 這道題出的難度較高,雖然說是常見表名和欄位名,但由於進行了過濾,很難進行猜解。過濾了較多的...
鄧普頓教你逆向投資讀書筆記
1 變現很重要,不要發生擠兌 2 在別人沮喪地賣出時趁機買進,在別人瘋狂買進時趁機賣出,這需要最大的毅力,但收穫也最豐碩。3 牛市在悲觀中誕生,在懷疑中成長,在樂觀中成熟,在興奮中死亡。4 避免購買那些 注定會跌的 是邁向成功的第一步。5 國內生產總值是衡量乙個國家經濟增長和總產量是否保持良性發展的...
微淼商學院 教育先行,財商教育是金融普惠的重要基建
普惠金融已經走過了7個年頭。從社會層面來看,普惠金融的發展有利於消除貧困,實現社會公平與穩定,並且伴隨基層民眾的金融意識覺醒,發展普惠金融的基礎設施已齊備,監管制度能有效防止重大金融風險的發生,當前我國普惠金融程序已經到了乙個關鍵節點。但事實上,隨著金融普惠進一步走向深水區,創新金融 普惠金融的進一...