逆向工具angr的快捷教程(3):CTF解题实例

本文利用angr的符号执行功能解决CTF中的题目,包括find_condition、symbolic_registers和symbolic_stack。通过ida分析二进制代码,设置符号值,利用is_good和is_bad函数判断程序执行路径,最终找到答案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此前的文章中,曾经提过“angr是一个基于Python开发的二进制程序分析(Binary analysis)框架,可以用于开展动态符号执行(Symbolic Execution)和多种静态分析”。事实上,Symbolic Execution也正是angr的一个代表性功能。本文将使用angr的符号执行功能来解几道具有代表性的CTF练习题(原始题目中的待分析二进制代码参见【1】)。


题目一:find_condition

把程序文件导入到IDA中,按“F5”可以看到其反汇编之后解析出来的伪代码(C-like style code),如下图所示:

程序的逻辑是比较清楚的。比较两个字符串s1和s2,如果它们满足条件,就成功(输出“Good Job.”),否则就失败(输出“Try again.”)。其中,s1是把用户输入的字符串经complex_function函数处理后的结果。也可以考察一下该函数的反汇编结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白马负金羁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值