buuctf level1解题记录

博客记录了逆向数字获取flag的过程。先解压文件,对其中一个文件查壳并用ida64打开,查看主函数伪代码,发现循环主体输出19个数,推测output文件中的数字是要逆向的,随后给出Python脚本进行处理,最终得到flag为{d9 - dE6 - 20c}。

1.解压后发现两个文件,output文件打开是数字

2.将另一个文件先查壳

3.直接ida64打开看看

4.欸嘿,发现个主函数,进去看看,直接看伪代码

5。好好好,一眼就逮到循环主体,发现正好输出19个数,那应该是output里就是我们要逆向的数字,直接上个脚本先

a=[198,232,816,200,1536,300,6144,984,51200,570,92160,1200,565248,

756,1474560,800,6291456,1782,65536000]

flag=''

for i in range(1,20):

    if i&1 :

        flag=flag+chr(a[i-1]>>i)

    else :

        flag=flag+chr(a[i-1]//i)

print(flag)

       

6.ok,直接解决

此题flag为{d9-dE6-20c}

### BUUCTF Level 4 解题思路 对于BUUCTF level 4,题目通常涉及二进制漏洞利用技术。具体到此关卡,主要考察的是通过格式化字符串漏洞来实现任意地址读取以及最终获取flag。 #### 题目分析 程序可能存在未正确处理用户输入的情况,特别是当涉及到格式化字符串时。如果程序将用户的输入直接作为格式化字符串参数传递给`printf()`或其他类似的函数,则可以利用这一特性来进行攻击[^3]。 #### 利用方法 为了完成这道挑战,需要构造特定的payload以触发格式化字符串漏洞并泄漏栈上的数据或库函数地址。一旦获得了这些信息,就可以进一步计算出系统调用所需的偏移量,从而控制执行流程达到提权的目的。 #### Python Exploit 脚本示例 下面是一个简单的pwn工具包(Pwntools)脚本来展示如何连接服务器发送恶意负载: ```python from pwn import * # 设置目标IP和端口 target_ip = 'node4.buuoj.cn' port_num = 26465 # 创建远程连接对象 conn = remote(target_ip, port_num) # 构造Payload offset_to_return_address = 0x88 # 假设返回地址位于缓冲区之后88字节处 fake_ret_addr = 0xdeadbeef # 占位符用于覆盖原返回地址 payload = b'a'* offset_to_return_address + p64(fake_ret_addr) # 发送Payload至服务端 conn.sendlineafter(b'> ', payload) # 开启交互模式以便手动操作 conn.interactive() ``` 请注意上述代码仅为模板,在实际环境中需根据具体情况调整变量值如`offset_to_return_address`, `fake_ret_addr`等,并且可能还需要加入更多逻辑来解析响应消息、定位所需的信息(比如libc版本),进而构建更复杂的exploit chain。 #### 获取Flag 成功运行以上脚本并与服务端建立稳定通信后,按照提示逐步探索直至找到隐藏于内存深处的目标字符串——即为本次CTF竞赛所求之flag。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值