[Zer0pts2020]easy strcmp

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

application与input file填linux路径下的题目文件路径
dictionary填linu下题目文件所在文件夹的路径(即题目文件的父级)
Paramater不填
Hostname用ifconfig填自己的ip,Port端口固定
Password虚拟机密码

运行一下:

去找个地方下个断点:

这里的strcmp函数比较值的结果决定回显,所以在这里下个断点看看能不能直接找到a2【1】相关信息

跑完之后依旧直接结束证明断点没被运行到

状态栏中显示主函数返回0了?

据此可以推断出a1的值<=1,所以在a1判断时下断点。查看a1的值

此次调试卡在断点处,预发确定a1就是<=1,鼠标悬停在a1处可以查看a1的值,因为不好截图就不演示了。那么如何修改a1的值呢?

看到汇编语言这里,这里将edi赋值给内存中的一个位置,随后该位置与1进行cmp(即比较,具体作用自行百度)。所以edi寄存器存放的就是a1的值。

对着其直接改值就行了,不用太大,够用就行

然后继续向后运行就可以,走进if判断内了
然后在步入(一定要步入,不要步过)strcmp函数的时候,发现这个函数变样了

他静态调试是可不是这样的:

所以推断出strcmp是个障眼法真正的其实在sub_561A114BA6EA
然后就静态分析这个函数

也就是对字符串“zer0pts{CENSORED}”进行操作,而数组中第一个值与最后一个值为0,所有前8位与最后8位未进行处理,也就是说只对“CENSORED”进行处理。


很明显是小端序。
此程序在电脑中运行时便是以小端序运行,所以在编写脚本时要注意将字符串逆序处理后与数组进行相加后,再将得到的flag逆向。如果将数组的值变回大端序与正向的字符运算会导致第一个数字存在进位导致数据溢出。总之脚本编写要严格按照计算机底层运算的逻辑(这里卡了好久。。)

enc = "********CENSORED********"
m = ['410A4335494A0942', '0B0EF2F50BE619F0', '4F0A3A064A35282B']
enc = enc[::-1]
flag = ''for i in range(3):c = ''n = enc[8*i:8*(i+1)]for j in range(8):a = hex(ord(n[j]))c += a[2::]d = int(('0x' + c), 16)b = int(('0x' + m[i]), 16)e = str(hex(d+b)[2::])c = ''for j in range(8):f = '0x' + e[j*2] + e[j*2+1]c += chr(int(f, 16))flag += c[::-1]print(flag)

做完之后才发现大佬的脚本如此精简,学习了。地址在这。不得不说大佬脚本写的tql。

enc = "********CENSORED********"
m = [0x410A4335494A0942, 0x0B0EF2F50BE619F0, 0x4F0A3A064A35282B]import binasciiflag = b''              #以字节为单位进行运算
for i in range(3):p = enc[i * 8:(i + 1) * 8]          #将字符串每8位一分割a = binascii.b2a_hex(p.encode()[::-1])      #p.encode()将p由字符串转为byte形式并倒叙,binascii.b2a_hex()函数将byte内的字符转为16进制b = binascii.a2b_hex(hex(int(a, 16) + m[i])[2:])[::-1]  #int(a, 16)将byte类型中16进制转为int型16进制,加上m【i】,因为是小端序所以倒过来即为flagflag += b
print(flag)

该脚本出处:https://blog.csdn.net/qq_39542714/article/details/106834947

re -12 buuctf [Zer0pts2020]easy strcmp相关推荐

  1. [buuctf][Zer0pts2020]easy strcmp

    [Zer0pts2020]easy strcmp 思路 脚本 思路 第一步还是先查壳 放在linux中运行一下,发现竟然没有任何输入的位置. 放入ida64中查看,因为这个是一个64位的可执行文件,有 ...

  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. 较传统AGV优势几何?AMR机器人产业格局将变
  2. java.lang.IllegalArgumentException: pointerIndex out of range
  3. android系统源代码添加新产品的支持
  4. 方法参数是结构体指针,报错信息是空指针怎么办
  5. python定时刷新tkinter界面_如何在python中“刷新”Tkinter窗口?
  6. 哈达玛变换的应用SATD、SAD等匹配算法
  7. IT程序猿常用编辑工具:UltraEdit for Mac v21.00.0.12中文版
  8. 关于WAP技术的介绍
  9. Cfs三层靶机内网渗透模拟
  10. Android 最最最简单的浏览器代码
  11. 基于掷色子规则的c语言编程,掷骰子游戏-C语言
  12. Python生成二维码的操作方法
  13. R绘图 第十篇:绘制散点图(高级)
  14. 数电快速入门(五)(编码器的介绍以及通用编码器74LS148和74LS147的介绍)
  15. dpi和ppi换算_ppi和dpi换算(1ppi等于多少dpi)
  16. linux 扫描 hba卡磁盘,Linux下更换HBA卡重新扫盘
  17. Redis应用详解(一)分布式锁
  18. Thread--线程让步yield
  19. Codeforces Round #702 (Div. 3)D. Permutation Transformation
  20. 中国人太空行走的一天

热门文章

  1. pandas合并excel
  2. 安装atari 游戏的Rom
  3. 如何购买一台云服务器
  4. 【AI视野·今日NLP 自然语言处理论文速览 第三期】Tue, 8 Jun 2021
  5. C语言abs函数与fabs函数,函数abs 和fabs
  6. 如何实现手机远程控制电源开关
  7. 矩阵出现重复特征值,其特征向量的简便求法
  8. defaul文件封装 export_vue-cli3.0打包组件后不能使用export default was not found in umd.js...
  9. 千杯酒中检测那一杯毒酒的问题及思考
  10. 知识资源整理(持续更新)