一個好玩的CTF題


一個CTF的題目,拿來學習學習

玩了好久,再加上學校一堆破事,最近又開始瞎弄了,找了幾個CTF的題目,和別人寫的一些內容,也當是學習,也當是看完之后的小結。順便也說一下如果自己拿到這題目會從哪做起。

這個,由於之前IDA學的等於沒學,一些神操作比如F5大法什么的,只是知道,具體也沒怎么用,還需多實踐啊!

廢話不多說,開搞

瞎比看

拿到了先運行下,這個,畫風一如既往有點low逼,隨便輸入肯定不對,稍微記一下輸出內容吧,畢竟字符串還是有用的。猜一下估計就知道如果對的話,應該就是所謂的好啊正確啊什么玩意的。

拖到IDA中,圖啊啥的就不貼了,看看函數吧,有個main,所以習慣性的瞅一眼吧

看看代碼,哦,應該就是跟一下call sub_4011E0

大致看一下吧,應該就是這堆邏輯內容吧啊,一般需要注意一下這個輸入的內容的判斷,就是看看是不是字母啊數字啊大小寫轉化啊等等,還有就是長度什么的限制吧,同樣這里也有

這里我們還可以看到var_88是輸入字符串的內容吧,再結合一下下面的比較語句應該這個var_10對應的就是與輸入比較的東西吧

沒錯就這樣

瞎比搗

拖到od看看吧,簡單的F7+F8走啊走啊就到了人生的十字路口了

按照原來的分析的話,他繼續走下去了,走的話得去模塊分析,然后繼續走,然后找啊找找到所謂的算法。腦洞好大。。。。。。我就不走了,反正我是不走了。

但是,但是,機智的我看到了一個東西00401000,這還走個啥,直接過去不就得了改個代碼走過去

這里你就看到了你想看到一堆字符串吧,開心了吧,保存一下吧。

再來吧,拖到IDA看看,然后和之前的一樣走一下,就會來到這個地方,哎喲喲喲喲,好黑啊,這。。

接下來就是F5大法了,呵呵呵,算了自行解決吧,我還是用OD看吧。

首先我們看一下這幾個報錯的地方,看看吧

第一個,看看上下文,應該是算長度的,然后比較長度和0x19也就是25比較一下,不是就出錯,也就是輸入時25個字符吧。

然后下面就是定義的一個******的字符串吧,鬼知道是啥,不管它

接着走接着看,做了幾個比較,對al中的數據和6A/68/6B/6C作比較,不是的話就報錯,al應該比較的是ascll碼吧,對應的就是J/H/K/L,也就是說輸入的25個字符必須是這4個之一

這樣吧,我們試試輸入25個h看看,嘛情況?一路F8,果然走到h對應的case

縱觀這幾個case,都有個共同點,和00409030的數據作比較,我們走去看看這到底是個啥?

哦,好像迷宮啊,別問我咋知道的,多看看帖子就曉得。把它拉下來吧,那個記事本,然而這屌迷宮走不通。。。。。。。數數個數,調整調整,正好搞成8*8的,哎喲,還真能走通

走迷宮嘛,習慣性想到上下左右,再看看剛才說的hjkl,應該就是對應的上下左右吧,具體看一下代碼。case6B也就是對應的k,我們看下能看見對應的是004010C3 . 83EE 08 sub esi,0x8

由於做的事一個8*8的迷宮,所以這個減8對應的就是迷宮中的向上,同樣我們可以找到對應關系

K--上

J--下

h--左

l--右

這里l對應代碼沒有寫是右,但是由於之前排除掉其他字母的對應關系,然后這里只有l能對應右,所以那就右吧。。。。。

然后還能看到表示的就是所謂的牆吧,因為移動之后做了下比較,是就報錯。

繼續往下看,看到了good,這里看到了一個比較,0x23,對應的就是#也就是我們迷宮中終點吧,完美!

來吧走迷宮吧,對應結果khkhhhjhjjjjjljlllklkkhhh,試試吧,沒問題

瞎比想

1、呵呵呵,好像有啥問題沒搞明白,起點為啥是那?回來看看代碼。哦,沒問題啊,眼瞎了。

2、好吧,弄完了感覺好麻煩,總覺得不爆一下不爽。呵呵呵,就這吧

讓你瞎判斷,改了你,直接jmp到good的位置

保存,運行,隨便輸入點東西試試,搞定!

小結一下:這題很好玩,嘿嘿嘿。

附上原分析帖子鏈接:http://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=15539&highlight=ctf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM