实验吧 逆向 10000000

实验吧链接点击打开链接 

最近博主从算法转到了逆向,说实话本人感觉算法很重要,最自己的学习能力还有编程能力都有比较大的提升 然后博主看了一些视频后 开始刷ctf的逆向题了,听大牛们说 实验吧的题很水 然后我就试着做了一些实验吧的题 现在也就做出来两个 23333333 有点菜 但是慢慢应该就会好些吧~~~

先说这道题的思路 ,也是让找出flag 说实话遇到这种题 我总是想先绕过flag的破解,无论输入什么数,都是正确的(中毒太深了),然后就开始疯狂找 flag 这个flag 是有密码的规律 首先博主用的工具是od ,然后载入 先搜索字符串 喵 一打开页面就发现 

这个也太简单了 ,然后直接对 出现喵的地址进行断点,然后f9开始运行,然后发现 


发现了输入函数 然后 随便输入几个数字 f8往下走 然后发现了 strcmp函数 然后发现下面的窗口是


两个地址 22FF38 还有22FF24 然后自己找了有重新分析以一波 发现22FF38就是输入的字符(其实可以直接判定,因为strcmp传进的参数就2个地址)然后查找22FF24 地址 发现这个


这个大概就是要比较的数值 然后我们有个循环 然后发现了


扫描二维码关注公众号,回复: 1455077 查看本文章

对eax进行0x80的或与 然后我们知道 想求相反的或与 可以直接或与 然后 我们有c++可以来模拟出来这个比较函数,然后对那几个数组进行或与 直接求出flag(看着大佬们用python写的好随意 羡慕ing)

下面贴出c++代码

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
using namespace std;
char p[110];
string aa;
int b;
//E6 EC E1 E7 BA F4 E5 F3 F4 F4 E5 F3 F4 0
int main(void)
{
    aa.clear();
    while(~scanf("%p",&b))
    {
         if(b==0)
            break;
        aa+=(0x80)^b;
    }
    cout<<aa<<endl;
    return 0;
}

然后输入上面注释的代码就可以了


emmm flag直接输出testtest就行 为此我做了好多

萌新第一次发帖 有错误还请大牛们指出

应该没人转载吧·~~~ 有人转载说明出处就行.。。。。

猜你喜欢

转载自blog.csdn.net/qq_41071646/article/details/80147627