暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

08 SESSION验证绕过

digo8wx安全 2021-01-11
673

源码:

<?php

 

$flag="flag";

 

session_start();

if(isset($_GET['password'])){

if($_GET['password']==$_SESSION['password'])

die('Flag:'.$flag);

else

print'<p>Wrongguess.</p>';

}

mt_srand((microtime()^rand(1,10000))%rand(1,10000)+rand(1,10000));

?>

 

函数释义:

mt_srand()播种 Mersenne Twister 随机数生成器。

mt_srand(seed)   ,用 seed参数 来给随机数发生器播种。

microtime()函数返回当前 Unix 时间戳的微秒数。

rand()函数生成随机整数。

代码分析:

输出flag的条件

$_GET['password']==$_SESSION['password'])

password和session都为空,即可相等,因此清除掉sessions即可

解题过程: 

password和session都为空,即可相等,因此清除掉sessions即可

但是真正在实践的时候,没有抓包删除session值,只是将password参数置空可以获取到flag,如下所示:

 

 

http://localhost:63342/php_bugs-master/08%20SESSION%E9%AA%8C%E8%AF%81%E7%BB%95%E8%BF%87.php?password=

 

 

 

抓包进行尝试,password和PHPSESSID都为空的情况下可以爆出flag

 

 

只有PHPSESSID为空不可以,不能获取到flag值

 

 

 

注意:不能直接将cookie中的内容全部删除,因为我是直接在phpstorm中打开的网页链接,所以有一个Phpstorm-454e6646值,都删除会报错。如果是直接从phpstorm中打开则需要注意,其他情况可忽略该注意事项。

 

 

 

参考链接:

https://github.com/bowu678/php_bugs

 


文章转载自digo8wx安全,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论