对“ciscn_2019_n_3“的理解

""具体分析就不说了,其余师傅讲得好,说下关键理解:

对于add()函数:
固定创建一个0xc大小的chunk,而后根据要输入的内容是否决定再创建chunk:
如果是输入数值则不创,如果输入字符串,则保存字符串的指针在首个chunk中,而后将字符串输入往第二个chunk中。
在这里插入图片描述
关键在于这里,分析IDA后发现存在system函数,那么不必泄露libc地址,直接利用elf.plt[“system”]
这个records[v0]+4就是free函数的地址,如果改为system_plt,再往其后的records[v0]指向的地方输入“/bin/sh\x00”那么就解决了。dele功能被执行时,执行的就是system(“/bin/sh\x00”)了
本题利用的是fastbin attack的这个性能:释放某个大小chunk时,申请同样大小的chunk。在申请的时候向相应chunk输入以上提到的值。

图片来自这里
在这里插入图片描述
在这里插入图片描述

像这种在程序执行中利用到的函数地址:被放在了chunk里头或者某个地址的–容易被修改从而执行别的函数。

### 关于CISCN 2019 N8题目的解析 在全国大学生信息安全竞赛(CISCN)中,Web方向的题目通常涉及漏洞利用、文件包含、反序列化攻击等内容。对于CISCN 2019中的N8题目,其核心考点可能围绕PHP反序列化漏洞展开。 #### PHP反序列化漏洞分析 在CISCN 2019 Web1题目中提到的内容表明,该赛事的部分题目设计基于PHP对象反序列化的特性[^2]。具体到N8题目,可能存在类似的机制: - **Payload构造**:通过精心构造的对象结构触发特定逻辑路径,实现任意文件读取或其他敏感操作。 - **关键点提示**:根据已有资料,在某些情况下需要调整`Handle`类的相关属性来适配目标环境的要求[^5]。 以下是针对此类问题的一个通用解决思路及其Python脚本示例用于生成payload: ```python import pickle class Exploit(object): def __reduce__(self): import os command = 'cat /flag' # 假设我们需要执行命令获取flag return (os.system, (command,)) def serialize_exploit(): serialized_data = pickle.dumps(Exploit()) with open('exploit_payload', 'wb') as f: f.write(serialized_data) serialize_exploit() ``` 需要注意的是上述代码仅为演示如何创建一个简单的pickle反序列化攻击向量,并不适用于实际比赛场景下的PHP应用;真正的解决方案需依据具体的程序行为模式定制相应的php序列化字符串形式的数据包提交给服务器端处理以达成预期效果。 #### 文件上传与包含技巧 如果N8还涉及到文件上传功能,则可以尝试以下方法绕过检测并植入恶意脚本: - 利用MIME类型校验不足上传图片马; - 结合LFI(Local File Inclusion)缺陷访问已上载至服务器上的特制图像文件完成进一步渗透活动。 综上所述,解答这类综合性较强的CTF赛题不仅考验选手们的技术功底同时也对其创造力提出了较高要求。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值