网鼎杯第三场总结(关于parse_url、JWT生成token、python注入)

本文总结了网鼎杯第三场比赛中遇到的PHP parse_url函数漏洞利用方法,JWT(JSON Web Token)生成token的原理及伪造技巧,以及Python中的模板注入和类的逃逸技术。通过案例分析了如何构造payload来欺骗parse_url函数,以及如何通过JWT伪造用户身份。同时,探讨了Python中如何利用类的mro属性进行文件操作。
摘要由CSDN通过智能技术生成

例行说明:

    比赛过去很久了,才勉强有精力总结一下用到的知识点,主要是关于wp中一笔带过,讲的比较模糊的三个方面总结下。

 

0x01 comein题目关于parse_url函数漏洞(其实只是使用不当)

题目:

ini_set("display_errors",0);
$uri = $_SERVER['REQUEST_URI'];
if(stripos($uri,".")){
    die("Unkonw URI.");
}
if(!parse_url($uri,PHP_URL_HOST)){
    $uri = "http://".$_SERVER['REMOTE_ADDR'].$_SERVER['REQUEST_URI'];
}
$host = parse_url($uri,PHP_URL_HOST);
if($host === "c7f.zhuque.com"){
    setcookie("AuthFlag","flag{*******");

1、先检测如果uri中 if(stripos($uri,".")) 就会结束,本意应该是不希望uri中出现点字符,但点在第0号位时,stripos函数返回值是0,if(0)不成立,就绕过了。。

2、第二个if是判断若这个uri不是个url,那么给它加上http://还有host还有uri,拼成一个url

3、用parse_url函数获取第二步拼接后$uri的Host,并判断是否等于特定值。

 

问题来了,怎么骗过parse_url函数,通过可控的uri部分,让整个被转换后识别出特定的host?

http://127.0.0.1/index.php 

红色部分是可更改的uri,且第一个字符一定要是. 不然一开始就die了

 

(注意:改uri在burpsuite中改,不要在浏览器地址栏改,浏览器会把你的../自动忽略,可能有莫名bug)

我们先遵守第一条原则࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值