[GWCTF 2019]枯燥的抽奖

这个题是一个php伪随机数漏洞

参考文章:https://www.cnblogs.com/zaqzzz/p/9997855.html

打开后在页面源代码ajax有一个传参可以看到check.php

 check。php有源码,看到随机种子,应该利用随机种x

先用脚本将伪随机数转换成php_mt_seed可以识别的数据

str1='abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
str2='NoPYloluCE'
str3 = str1[::-1]
length = len(str2)
res=''
for i in range(len(str2)):  
    for j in range(len(str1)):
        if str2[i] == str1[j]:
            res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' '
            break
print(res)

 然后复制这一串seed,用另外的工具爆破

 https://www.openwall.com/php_mt_seed/

点击箭头位置直接下载即可,c的脚本开箱即用

 

 

 这里他提示php7.0+,就一定要用php7

测试php7和php5得到的结果是不一样的

用check.php的代码修改一下,直接得即可

<?php
   
   mt_srand(234935588);
   $str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   $str='';
   $len1=20;
   for ( $i = 0; $i < $len1; $i++ ){
       $str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);       
   }
   echo "<p id='p1'>".$str."</p>";
 
?>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值