實驗吧題目鏈接:http://www.shiyanbar.com/ctf/2020
用IDA反編譯main函數,可以看到下面代碼:
這一部分是在建立無頭結點的鏈表,鏈表中一共10個元素。每個元素16字節大小,前4個字節存儲1到10的序號。從第5個字節開始存儲序號值+109。
鏈表採用前插法,qword_601080始終指向鏈表的頭。
對於輸入s,如果sub_40074D返回值爲0,則正確。
觀察函數sub_40074D,當v6和v9從第0到第5全部相等,返回值爲0。
v9從第0到第5分別爲:5 2 7 2 5 6
所以最後v6必須也爲 5 2 7 2 5 6
觀察上面的代碼,可以看出v6初始值爲0,在while循環結束後被v4賦值。而v4每輪初始值爲0,只有當輸入的字母與鏈表中序號值+109相等時,纔會被賦值爲序號值。
由於每輪循環v4應分別等於5 2 7 2 5 6
所以輸入字母的ASCII碼應爲114 111 116 111 114 115
即rotors
提交flag時注意沒有冒號