運行程序
32位ida打開,shift+f12查看運行時的中文,這里雙擊flag get字符串進入rdata段

雙擊后面的函數,進入text段,小的窗口視圖里可以看見匯編代碼調用函數的句子

右邊的即是鼠標滑到函數上面出現的小窗口
tab鍵查看偽代碼,v8是我們輸入的,v4是需要相比較的,flag get最后的輸出和v4有關

觀看通篇代碼尋找可疑的點,或者叫做關鍵的地方
雙擊打開v4,發現
①在堆里的數據字符串變量名叫xmmword,那么v4是程序運行時加載進去的
②返回兩個寄存器地址,那么猜測xmmword數據由兩個變量組成
返回偽代碼我們看到第12行,xmmword的數據通過xmmword_413E34傳遞(_mm_storeu_si128存儲,v4代表所指示的變量xmmword)
第14行,qword_413E44所指示的地址剛好在xmmword里(_mm_storel_epi64存儲,v5代表所指向的指針,指針指向的地址剛好在xmmword里)
所以v4內容由xmmword_413E34和qword_413E44組成


雙擊xmmword_413E34,按R將內容轉換成字符串,因為cpu是小端存儲,又align 4對齊,所以倒過來就是flag;DUCTF{We1c0met0DUTCTF}
