攻防世界 REVERSE 新手區/re1
先看題,題目描述沒啥有用資訊,直接下附件
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9MGVPBTWUFGdGJTY2ljMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1MTO0UjMyETMzADNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
打開
先随便輸個數
估計是個字元串比對的題,接下來用IDA32位打開
看到有個strcmp函數,比較v5和v9,然後判斷v3,根據v3給出相應的結果。這時我看到了個printf(aFLAG),滿懷欣喜地點進去看了
啊?這麼快就得到答案了麼?(并沒有。。)
看下描述,和運作的那個程式一樣結果,看來是假的
那麼那個else後輸出的就應該是代表正确的答案了,跟進unk_413E90
看到flag get,證明沒錯
之後就從判斷條件開始入手v9是要輸入的數,接下來就是找找v5的數值是多少了,直接點選v5跳轉,看到除了xmmword就沒别的了,那就傳回。
看到開始有個函數包括了v5和xmmword,應該是将xmmword_413E34的值賦給v5。
跟進檢視一下
xmmword的值已經出來了:那麼v5的值就是 3074656D30633165577B465443545544h了
v5應該是16進制表示的,看下strcmp函數,有個将v5轉換為字元串的函數,
百度一下16進制轉字元串
這串字元0tem0c1eW{FTCTUD看着不像flag,但是在中間看到了個FTC,再看下題目來源
這不就是flag翻轉過來了嘛,百度了個文字倒序網站,翻轉一下
百度了一下找到了這個:“彙編裡面存儲字元是采用小端格式”
啊,天真的我以為得到了flag,直接去送出了![]()
攻防世界 REVERSE 新手區/re1
然後,,,試了幾次都不正确。。。。。看下裡面的字元串,可以看出是串英文:Welcometo,那應該是少了東西在後面,但是也沒看到有啥拼接字元串的函數了哇。。。。然後我看到了v6這串字元
跟進去看下
诶?好像沒有哪個地方用了這串字元,那轉下字元串試試
然後得到了這串字元: }FTCTUD
嗯?這不就是後半段字元麼,拼在之前得到的字元串前面(因為是小端格式排列,是以要拼到前面): }FTCTUD0tem0c1eW{FTCTUD
再次翻轉,得到flag: DUTCTF{We1c0met0DUTCTF}
再輸入那個程式驗證一下
但是真的不知道在哪把v6拼到v5前面去了…