日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

南邮攻防训练平台逆向maze

發布時間:2024/4/17 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 南邮攻防训练平台逆向maze 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

文件為 ELF64 可執行文件,輸入正確 flag 返回判定結果的逆向題。

用 ida 打開,先看f5之后的代碼,容易知道 flag 長度為24位,以 "nctf{" 為前綴:

先是一個對字符的判定過程:

可以看出是對輸入的字符串進行判斷,當當前字符值大于78則再次與79和111進行比較,滿足條件則分別跳入 sub_400650 和 sub_400660 函數中,分別對應自增一和自減一,且范圍為(0,8);else 中情況也一樣,但是區別在于上者是 &v9+1 而下者是 &v9 ,接著看:

每次判斷完之后都回跳至 LABEL_15 處,調用 sub_400690 函數判斷,而其中的參數 asc_601060 為字符串 :“ *******? ?*? **** * ****? * ***? *#? *** *** ***? ? ?********* ”,長度為64,剛好是8*8,一個方陣,而函數則是進行判定當前那位置不能為‘ * ’字符,并且最后必須跳至‘ # ’字符處,否則輸出“錯誤”;假如換行成方陣模樣(將空格替換成‘ 0 ’ ,顯示的是notepad++中的格式,更整齊些):

再聯系上面的flag長度為24,去掉格式之后剩下18個字符,而且根據 main 函數的過程知道每個字符只能在方陣范圍內控制一步,上、下、左、右,看一下圖中,從0開始要在符合條件的情況下到達' # '處至少需要18步,和字符數剛好一致,且最短路徑唯一,所以結果也唯一,然后在v9這個地方從反編譯的代碼不是很清楚,看一下匯編代碼:

?

?

其實不是同一個變量,一個控制行(定位時 *8),一個控制列,看一下后面的匯編代碼容易知道 r14 控制行,即在反編譯代碼中 &v9 地址中的變量控制了行數, &v9+1 則是列;直接手寫,最后的 flag 的 ascii 碼值:

111,48,111,111,48,48,79,48,48,48,111,111,111,111,46,46,79,79

得到字符串:?o0oo00O000oooo..OO

flag : nctf{o0oo00O000oooo..OO}

?

==

轉載于:https://www.cnblogs.com/zUotTe0/p/9159592.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的南邮攻防训练平台逆向maze的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。