这道题目适合科普:rust逆向,xmm指令。

rust逆向的一些注意事项

rust题中,“ida给的main”里的第一个lea是“用户写的main”。

如下图,这是ida标记的main。而用户写的main其实是sub_1400012A0。姑且可以认为“ida给的main”里的第一个lea是“用户写的main”。

rust打印字符串的代码有一定规律

从下图可以看出,rust打印字符串一般是下面这样,得占用好几行。

rust题会有断头的代码,关键代码找不到的时候注意观察cfg视图。

断头如下图所示:

本题中的可疑代码:

注意xmm,大概率是优化后的用户代码。

详细描述见下文。

动态调试rust时断点位置和异常状况

rust编译出的exe做动态调试的时候,断点可以下在“用户写的main”里。调试时报Microsoft c++ exception可能是正常现象,可以直接setip继续运行。

调试本题时,如果直接在可疑代码下断点,无法断下来,直接报Microsoft c++ exception。但如果从please input flag之后下断点就没问题。或许与多线程有关?(调试时会有多个线程,但应该并非出题人显式写的,或为语言特性。go语言也类似)

题外话是做这题时发现ida可以像ollydbg、x64dbg一样下硬件断点。

xmm指令用于循环处理字符串

比如本题判断用户输入的每一位是否超过0x4A,就可以用这样的xmm运算来一次性处理16位输入:

NKCTF2023 babyrust相关推荐

  1. NKCTF2023 pwn wp

    序 姗姗来迟-我是蓝狗.从这场比赛中学到了许多新知识,所以记录一下. ezshellcode 能输入 0x100 字节的任意指令执行,很明显直接丢个 shellcode 进去就行了. 问题是程序不是从 ...

  2. NKCTF 2023-misc全解(有脚本,有详解)

    目录 misc题目附件连接 前言 hard-misc NKCTF2023问卷调查 Blue THMaster easy_bmp 方法一 方法二 三体 easy_rgb 方法一 方法二 easy_wor ...

最新文章

  1. Java如何打印异常的堆栈?
  2. python locust 能压测数据库_Locust 教程
  3. 提问赠书 | 我们请了 7 位云原生专家,等你来问
  4. Pod详解-生命周期-创建和终止
  5. crontab 改成只读模式_以“三合一”模式推动提质增效 助力公司高质量发展
  6. CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)
  7. Linux系统的优缺点
  8. Maven学习总结(39)——Maven私服的搭建及使用deploy命令部署构建问题汇总
  9. idea 配置J2EE
  10. ASP.NET Web API 2基于令牌的身份验证
  11. ajax请求进error怎么弹出错诶信息,在ajax请求jqgrid之后出现错误时显示错误消息...
  12. vb改动microsip让microsip隐藏然后命令拨打电话
  13. excel冻结窗口怎么设置_粗暴讲解,2分钟 | 即懂excel 冻结首行、首列和单元格怎么弄?...
  14. python3超简代码爬取桌面壁纸
  15. 关于IE读取缓存页面不刷新解决方法
  16. 给一整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3.“a的bit3”
  17. 如何把照片压缩到20k一下_怎么样才能把大于20k的照片缩小到20k之内?分享解决问题的方法...
  18. 微课堂v2 2.1.8以后分销设置就保存不了解决办法 微擎
  19. 【bzoj3065】: 带插入区间K小值 详解——替罪羊套函数式线段树
  20. 使用Google、百度等搜索引擎在指定网站内搜索指定内容

热门文章

  1. C语言程序设计——三子棋游戏
  2. PS多个版本免费本地高速下载(包含2021)
  3. CANanlystII 基于python的二次开发实践
  4. XML简单操作类、只可操作单行数据(可直接使用)
  5. 如何搞好公司和员工的关系三:IT职场小白如何快速融入一家公司
  6. 对话木瓜移动创始人沈思 l 从硅谷到北京
  7. oracle台湾拼音,oracle汉字转拼音
  8. Linux 平台配置ODBC连接达梦数据库
  9. 什么是触发器及简单例子
  10. Git的下载与安装(全)