1. 程式人生 > >證明自己吧--------Writeup

證明自己吧--------Writeup

判斷 con 存在 壓縮 匯編 tdi .com 函數 pos

原題:http://www.shiyanbar.com/ctf/28

下載一個壓縮包,裏面有個CrackMe1.exe,查看了下,沒有殼。

直接拖到ida去反匯編

技術分享圖片

一進來就是在main裏面,直接F5看看

技術分享圖片

可以看到在if ( sub_401060((const char *)&v4) )這裏做了判斷

跟進 sub_401060函數看看

技術分享圖片

這裏得知輸入的每個字符會跟20H做異或運算

技術分享圖片

在40708C的地址存在一處字符串,會提取該地址的字符串做-5的運算,然後跟輸入的字符串異或運算後的結果對比

如此一來,我們只需要找到對應的40708C的字符串,手動提取出來,然後做-5運算,在異或20H

得到的結果,就是我們需要輸入的驗證碼

技術分享圖片

數了一下,一共14位驗證碼

全部提取出來(提取時註意是從右至左)

#include <stdio.h>

int main(){
    int a[14]={0x68,0x57,0x19,0x48,0x50,0x6e,0x58,0x78,0x54,0x6a,0x19,0x58,0x5e,0x6};
    int i;
    for(i=0;i<14;i++){
    a[i]=a[i]-5;
    a[i]=a[i]^0x20;
    printf("%c",a[i]);
    }
    
    return 0
; }

記得轉ASCII碼

技術分享圖片

證明自己吧--------Writeup