NKCTF2023 babyrust
2024-04-09 23:21:06
这道题目适合科普: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相关推荐
- NKCTF2023 pwn wp
序 姗姗来迟-我是蓝狗.从这场比赛中学到了许多新知识,所以记录一下. ezshellcode 能输入 0x100 字节的任意指令执行,很明显直接丢个 shellcode 进去就行了. 问题是程序不是从 ...
- NKCTF 2023-misc全解(有脚本,有详解)
目录 misc题目附件连接 前言 hard-misc NKCTF2023问卷调查 Blue THMaster easy_bmp 方法一 方法二 三体 easy_rgb 方法一 方法二 easy_wor ...
最新文章
- Java如何打印异常的堆栈?
- python locust 能压测数据库_Locust 教程
- 提问赠书 | 我们请了 7 位云原生专家,等你来问
- Pod详解-生命周期-创建和终止
- crontab 改成只读模式_以“三合一”模式推动提质增效 助力公司高质量发展
- CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)
- Linux系统的优缺点
- Maven学习总结(39)——Maven私服的搭建及使用deploy命令部署构建问题汇总
- idea 配置J2EE
- ASP.NET Web API 2基于令牌的身份验证
- ajax请求进error怎么弹出错诶信息,在ajax请求jqgrid之后出现错误时显示错误消息...
- vb改动microsip让microsip隐藏然后命令拨打电话
- excel冻结窗口怎么设置_粗暴讲解,2分钟 | 即懂excel 冻结首行、首列和单元格怎么弄?...
- python3超简代码爬取桌面壁纸
- 关于IE读取缓存页面不刷新解决方法
- 给一整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3.“a的bit3”
- 如何把照片压缩到20k一下_怎么样才能把大于20k的照片缩小到20k之内?分享解决问题的方法...
- 微课堂v2 2.1.8以后分销设置就保存不了解决办法 微擎
- 【bzoj3065】: 带插入区间K小值 详解——替罪羊套函数式线段树
- 使用Google、百度等搜索引擎在指定网站内搜索指定内容