1. 程式人生 > >18.10.4 實驗吧----whatamitoyou

18.10.4 實驗吧----whatamitoyou

提示是你會唱歌麼,一臉懵逼

開啟可以看到是一個elf檔案,我自己轉到了虛擬機器裡面去下載

下載下來後想直接執行一下,說我許可權不夠,也不明白是為什麼,直接chmod +x

拖進IDA看一下吧,靠字串定位(Your password is tjctf{)

也不知道是不是彩蛋,我們看看歌詞吧

Do you think I don't understand? 是的,我的確沒看懂………………

看看還有沒有別的歌詞,看到了you are my best friends in the world,搜一下是什麼破歌吧

就是題目,歌詞是亂序的

直接拖到最底下,分析一下吧,如下圖

我喜歡從下往上倒著看,先是一個while迴圈,知道v283的值就可以解出來了

我們可以看到v283的初始值是0,如果不參與上面的改變,while迴圈就執行不了

然後看一下彙編程式碼

我們可以看到在401890程式將第一句歌詞的地址存放到了[rbp-8]處,其實挺好定位的,你在偽C程式碼的最後一句賦值處按下TAB鍵就可以幫你定位了,然後跟著條約語句跳轉,如下,你要是是在不信,你搜歌詞去(xiao)

其實我的彙編也不是很熟練,但是不難看出程式將一個字元賦值給了[rbp-11h],判斷是否為0,然後再跳轉

如上就是到了換個詞的地方,其實就是為了求出rdx,帶著大家算一個吧

第二句歌詞是 I should've told you,地址在400FCB

0x2290+rdx*8=0x23a0

然後rdx+65-32逆回去等於'C',所以第一個輸入的是C

以此類推得到輸入的字元需要輸入的字元是CBDABCADBCCABBABBABACBCCABDADBABABB(其實還OK,每次判斷就是4句,對應著ABCD)

這個軟體你可以理解為64位下的OD

帶著引數執行就好了