[Zer0pts2020]easy strcmp

  • 思路
  • 脚本

思路

第一步还是先查壳

放在linux中运行一下,发现竟然没有任何输入的位置。

放入ida64中查看,因为这个是一个64位的可执行文件,有main函数,直接进入main函数查看

__int64 __fastcall main(signed int a1, char **a2, char **a3)
{if ( a1 > 1 ){if ( !strcmp(a2[1], "zer0pts{********CENSORED********}") )puts("Correct!");elseputs("Wrong!");}else{printf("Usage: %s <FLAG>\n", *a2, a3, a2);}return 0LL;
}

这里面有一个判断是判断a2[1]是否是等于那个字符串的,之后我们再去找a2

__int64 __fastcall sub_6EA(__int64 a1, __int64 a2)
{int i; // [rsp+18h] [rbp-8h]int v4; // [rsp+18h] [rbp-8h]int j; // [rsp+1Ch] [rbp-4h]for ( i = 0; *(_BYTE *)(i + a1); ++i );v4 = (i >> 3) + 1;for ( j = 0; j < v4; ++j )*(_QWORD *)(8 * j + a1) -= qword_201060[j];return qword_201090(a1, a2);
}

右移三位,先当与是8,八个一组,之后去减去qword_201060,看看这里是什么

qword_201060    dq 0, 410A4335494A0942h, 0B0EF2F50BE619F0h, 4F0A3A064A35282Bh

是这些,那么写反推逆运算,因为是小端序,最后要反转过来,所以脚本可写

脚本

import binasciistr_1 = "********"
str_2 = "CENSORED"
str_3 = "********"
word_1 = [0x410A4335494A0942]
word_2 = [0x0B0EF2F50BE619F0]
word_3 = [0x4F0A3A064A35282B]
bin_1 = binascii.b2a_hex(str_1.encode('ascii')[::-1])
bin_2 = binascii.b2a_hex(str_2.encode('ascii')[::-1])
bin_3 = binascii.b2a_hex(str_3.encode('ascii')[::-1])
j_1 = binascii.a2b_hex(hex(int(bin_1, 16) + word_1[0])[2:])[::-1]
j_2 = binascii.a2b_hex(hex(int(bin_2, 16) + word_2[0])[2:])[::-1]
j_3 = binascii.a2b_hex(hex(int(bin_3, 16) + word_3[0])[2:])[::-1]
print(j_1 + j_2 + j_3)

最后答案是
flag{l3ts_m4k3_4_DETOUR_t0d4y}

[buuctf][Zer0pts2020]easy strcmp相关推荐

  1. re -12 buuctf [Zer0pts2020]easy strcmp

    [Zer0pts2020]easy strcmp 前话:这题要用到ida64位远程调试先记录一下配置方法,因为本人使用的是ida7.6版本差异可能导致问题. application与input fil ...

  2. buuctf————[Zer0pts2020]easy strcmp

    1.查壳. 无壳.64位 . 2.IDA反编译. 找到主函数只是一个简单的比较. 只需要找到对a2做的变换.(函数不多). 找到是sub_6EA函数. 分析函数: 把输入的flag8个一组(三组)与q ...

  3. [Zer0pts2020]easy strcmp

    是elf格式的64位程序,无壳 int64指的是64位有符号整型 fastcall是一种函数调用规定 按理来说main函数的写法上是只能有2个参数的,不知道为什么这里有3个 初看main函数的逻辑是输 ...

  4. [Zer0pts2020]easy strcmp细节探究

    这道题大多数的wp不知道这个程序是怎么跑的. 这道题是由一个知名的日本战队zer0pts出的,还是挺新颖,挺有意思的 总体感知 首先来看看ida里的情景 这就是main函数的所有了,很简单,感觉啥也没 ...

  5. [Zer0pts2020]easy strcmp 分析与加法

    无壳,放入IDA自动跳到main函数 __int64 __fastcall main(int a1, char **a2, char **a3) {if ( a1 > 1 ){if ( !str ...

  6. Zer0pts2020 easy strcmp

    打开文件,直接在main函数里找到比较的地方,但是发现flag不是这个. 猜测strcmp函数有问题,或者输入经过了处理,于是开始动调,把断点下载a1 > 1的位置,发现strcmp函数不是那个 ...

  7. buu-[Zer0pts2020]easy strcmp

    64位 查看字符串 查看main函数 __int64 __fastcall main(signed int a1, char **a2, char **a3) {if ( a1 > 1 ){if ...

  8. BUUCTF--[Zer0pts2020]easy strcmp

    测试文件:https://wwa.lanzous.com/i54G4drrp1i 代码分析 打开IDA看了下main函数 这里就是将a2[1]与zer0pts{********CENSORED**** ...

  9. [BUUCTF][Zer0pts2020]Can you guess it?

    文章目录 前置知识 一些学到的新函数与新变量 新变量属性-PHP_SELF 新php函数-basename basename broken with non-ASCII-chars WP部分 前置知识 ...

最新文章

  1. 对标Bert?刷屏的GPT 2.0意味着什么
  2. linux 跟阿铭学linux
  3. 软件工程概论 课堂练习【图书馆系统的用例图】
  4. 人工智能在建筑运营_打造智能建筑商
  5. 460. LFU 缓存
  6. Event.ADDED_TO_STAGE的本质
  7. CentOS搭建Ghost博客
  8. 基于分布式光纤侦听技术的岛礁近岸防卫监测
  9. Unity3D项目五:简单打飞碟
  10. 安装orbslam2
  11. python阿拉伯数字转换为英文,python – 将东部阿拉伯数字转换为西方阿拉伯数字...
  12. 注册百度地图开发者账户创建
  13. CDN-内容推送网络
  14. leetcode刷题(三)——容斥原理
  15. SylixOS这个操作系统怎么样?
  16. [译]C++中的内存同步模式(memory order)
  17. zip直链生成网站_防止赖床的闹钟软件、免费好用的看图软件、色卡生成器 今天有什么?...
  18. [编译原理学习笔记2-2] 程序语言的语法描述
  19. 基于spaCy实现pytextrank对英文短语抽取
  20. 恒大帝景220平文华东路

热门文章

  1. 深信服技术认证之使用spark进行数据分析示例之拆分字段
  2. R语言按照人口比例绘制甘肃地图
  3. 网易我的世界服务器配置文件翻译,精致存储的配置文件翻译 - [RS]精致存储 (Refined Storage) - MC百科|最大的Minecraft中文MOD百科...
  4. tomcat服务器work文件夹说明
  5. Matlab Babble噪声
  6. 复赛后第一次正经写博客
  7. 微软 香港云服务器,香港云服务器好用吗
  8. 邮箱,手机号的正则表达式
  9. 什么是Lora Mesh网络
  10. 技术经理成长复盘-处理线上问题