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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

NSCTF-Reverse02 超级详细且简单的办法搞定

發布時間:2024/8/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NSCTF-Reverse02 超级详细且简单的办法搞定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

沒有殼 VC寫的

觀察界面 一個編輯框 一個按鈕

拖進IDA 在導入表里找到GetDlgItemTextA

為什么找這個函數 因為這個函數的作用就是 獲取我們輸入編輯框的內容

雙擊進入 ctrl+X 交叉引用,然后F5看偽C代碼 就一個自定義函數 其他都是系統函數 我們直接進去

進去之后 發現就是把我們輸入的值分成兩隊 分別和 4030XX 這一串對0xx7異或的值 和 對0x33比較

但是我們不管這么多,直接看后面,這個if,很敏感的感覺到 flag就藏在這個 401000()函數里面,所以我們在if這一行按下TAB

直接拿到這個if的地址 進入OD 操作 ctrl+G 到剛才if的地址 下斷

跑起來,用這個灰色按鈕克星激活 GetFlag 按鈕, 按下按鈕走到斷點

發現 關鍵的比較 這不就是剛才判斷 V2+V1==3 嗎??

這里的eax是1 當然和 3不相等,那我們改成cmp eax,1,1和1比較肯定一樣鴨,所以不會跳轉。 (這里把jnz直接改成jz也可以達到同樣的效果)

?

繼續單步 就得到了flag 全程不用做任何運算

?

這里再介紹下另外兩種解法,就是通過計算得到flag。

第一種:

把byte_4030xx處的字符轉換一下進制顯示,byte_4030xx處字符分別為“JPFjXj2;9GWbN”

編寫破解代碼

#include <stdio.h>int main() {int i, j = 0;char str1[] = "JPFjXj2;9GWbN";char str2[20] = {0x00};for (i = 0; i <= 6; i++) {str2[j++] = str1[12-i] ^ 7;}for (i = 5; i >= 0; i--) {str2[j++] = str1[i] ^ 0x33;}printf("%s\n", str2);return 0; }

把計算的結果填入編輯框 用按鈕克星激活GetFlag按鈕 就能得到flag了

第二種:

直接到這個解密函數 sub_401000 里面看看

?發現就是將 7e0cad17016b0>?45?f7c>0>4a>1c3a0 與0x7的異或操作

(解釋下這里v4為什么等于這么多,Dst是已知的,位置是ebp-38h,v4的地址是ebp-29h,轉為十進制后,兩個差15位,所以左邊的 flag:{NSCTF_md5 這十五位去掉就是v4的值)

提醒一下 “}” 這個的ASCII 就是125

用python寫腳本,直接得到flag

a = "7e0cad17016b0>?45?f7c>0>4a>1c3a0" out = "" for i in a:out += chr(ord(i)^7) print out

?

轉載于:https://www.cnblogs.com/tqing/p/11507709.html

總結

以上是生活随笔為你收集整理的NSCTF-Reverse02 超级详细且简单的办法搞定的全部內容,希望文章能夠幫你解決所遇到的問題。

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