得到為32bit,vc++6的程式。於是可用ida32開啟。並且切換到偽**,檢視main函式:
審查程式,先執行程式,並隨便輸入字串
得到wrong!結果,從上向下觀察**,第22行有scanf(as,v9)根據scanf的引數形式原函式為:scanf("%s",v9)即輸入的字串被儲存在v8中。據此猜測
sub_40134b((int)apleaseinputyou, v6);為輸出please input your serial:的函式。
繼續向下看,若還在while迴圈中,檢視內嵌的do while迴圈。
sprintf為是把格式化的資料寫入某個字串中的函式,將v4以asc_408044的形式寫入v8,雙擊asc_408044,在檢視中看出含義為"%x"即hexadecimal轉換。然後將v10與v8連線,後v9陣列下標右移,17次,相當於將v9(使用者輸入)全部轉化為16進製制儲存在v10中,然後跳出迴圈。
後用strcmp比較v10(使用者輸入)與v13"437261636b4d654a757374466f7246756e"的區別,返回success與wrong,由v10為hexadecimal可知v13也應是16進製制。轉換得到:crackmejustforfun輸入後的到成功結果剩下為返回result不重要,猜測flag
檢視main函式,puts輸出字串忽略,sleep系統休眠........puts輸出結果,發現&strs於是雙擊檢視,得到flag:9447
審查**,從main處看起,為比較correct與使用者輸入是否一致。於是觀察correct,發現經過encode()函式加密,通過字母位移與base64編碼加密,於是反順序自己寫py指令碼解密
得到:nctf
用ida開啟附件:
審閱**,看v3若為true則列印aflag_0(檢視其發現為失敗),則當v3為flase時成功。而v3的值是比較v5與v9(使用者輸入),則追查v5。
可知xmmword的值儲存在v5中,於是追查xmmword得到:(h是指hex)
在相應部分選中按r即可自動轉碼
得到flag
ida開啟附件,跳轉至main函式:
檢視**後發現在最後面呼叫函式輸出結果,該函式多次呼叫使用者函式,多次跳轉後審閱**最後發現輸出flag的地方
為兩長度為57的字串進行位運算
,用其計算出結果得到flag
附件為c原始碼,用txt開啟並審查**
為了不讓函式exit()執行,故
argc = 4 frist = 0xcafe second % 17 = 8 strlen(ar**[3]) = 7故改寫程式為
#include #include int main() //得到結果為c0ffee
Buu 攻防世界re新手區
我。終於考完放假了!幾乎乙個月沒學逆向了嗚嗚嗚,這兩天惡補了一下,但也都是些超級基礎的題 新手村,師傅們請自行繞過 因為我太菜了。1 buu bjdctf2020easy 這道題看起來還是很難的,是偶然看到乙個大佬的wp,真的tql 主函式裡面。什麼都沒有。main函式上面那個 ques的函式應該才...
攻防世界 新手區web
2020 11 1 用來記錄我的web之路 當乙個搜尋蜘蛛訪問乙個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜尋機械人就會按照該檔案中的內容來確定訪問的範圍 如果該檔案不存在,所有的搜尋蜘蛛將能夠訪問 上所有沒有被口令保護的頁面。暫時不太了解爬蟲技術 robots是一...
小白學習筆記(18)攻防世界 re新手區 maze
新手一枚,如有錯誤 不足 請指正,謝謝!ida巨集定義 載入ida64位 找到main函式,f5反編譯 main 函式裡大概是這情況 其中sub 400690 函式 也就是四個方向鍵 o 左移 o 右移 上移 0 下移 控制這個,在 和 中走,不能走到 上面,當走到 成功,在剛開始,申明了乙個 in...