证明自己吧--------Writeup

原题: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码

 

 

转载于:https://www.cnblogs.com/wh4am1/p/8457797.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值