一個好玩的CTF題

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

玩了很久,再加上學校一堆破事,最近又開始瞎弄了,找了幾個CTF的題目,和別人寫的一些內容,也當是學習,也當是看完以後的小結。順便也說一下若是本身拿到這題目會從哪作起。php

這個,因爲以前IDA學的等於沒學,一些神操做好比F5大法什麼的,只是知道,具體也沒怎麼用,還需多實踐啊!算法

廢話很少說,開搞函數

瞎比看

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

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

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

大體看一下吧,應該就是這堆邏輯內容吧啊,通常須要注意一下這個輸入的內容的判斷,就是看看是否是字母啊數字啊大小寫轉化啊等等,還有就是長度什麼的限制吧,一樣這裏也有字符串

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

沒錯就這樣class

瞎比搗

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

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

可是,可是,機智的我看到了一個東西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,試試吧,沒問題

瞎比想

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

二、好吧,弄完了感受好麻煩,總以爲不爆一下不爽。呵呵呵,就這吧

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

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

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

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

相關文章
相關標籤/搜索