当前位置: 首页 > news >正文

知名的集团门户网站建设企业/全球网站流量排名查询

知名的集团门户网站建设企业,全球网站流量排名查询,中国中小企业信息网官网,网站建设维护费 会计科目[GWCTF 2019]枯燥的抽奖 知识点:伪随机数构造 文章目录[GWCTF 2019]枯燥的抽奖解题过程1. 伪随机数(引用上面的链接内容)2. 将已知的部分伪随机数转化为php_mt_seed工具可以看懂的数据3. 下载php_mt_seed工具并且使用4. 得到完整字符串参考文…

[GWCTF 2019]枯燥的抽奖

知识点:伪随机数构造

文章目录

  • [GWCTF 2019]枯燥的抽奖
    • 解题过程
      • 1. 伪随机数(引用上面的链接内容)
      • 2. 将已知的部分伪随机数转化为php_mt_seed工具可以看懂的数据
      • 3. 下载php_mt_seed工具并且使用
      • 4. 得到完整字符串
    • 参考文章链接

解题过程

打开题目,是个这,让我们去搞一个20位的字符串,已经给了一部分字符串
在这里插入图片描述
同时发现了check.php,注意这个php函数中含有mt_rand函数,这牵扯到一个安全问题。贴一下大牛的链接:PHP mt_rand安全杂谈及应用场景详解

Hg11vtADEm
<?php
#这不是抽奖程序的源代码!不许看!
header("Content-Type: text/html;charset=utf-8");
session_start();
if(!isset($_SESSION['seed'])){
$_SESSION['seed']=rand(0,999999999);
}mt_srand($_SESSION['seed']);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);       
}
$str_show = substr($str, 0, 10);
echo "<p id='p1'>".$str_show."</p>";if(isset($_POST['num'])){if($_POST['num']===$str){xecho "<p id=flag>抽奖,就是那么枯燥且无味,给你flag{xxxxxxxxx}</p>";}else{echo "<p id=flag>没抽中哦,再试试吧</p>";}
}
show_source("check.php"); 

1. 伪随机数(引用上面的链接内容)

伪随机数是用确定性的算法计算出来的随机数序列,它并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。在计算伪随机数时,若使用的初值(种子)不变,那么伪随机数的数序也不变。伪随机数可以用计算机大量生成,在模拟研究中为了提高模拟效率,一般采用伪随机数代替真正的随机数。模拟中使用的一般是循环周期极长并能通过随机数检验的伪随机数,以保证计算结果的随机性。伪随机数的生成方法有线性同余法、单向散列函数法、密码法等。

mt_rand就是一个伪随机数生成函数,它由可确定的函数,通过一个种子产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接下来随机数序列的信息(可预测性)。

所以:大致过程就明了了,我们根据已经给出的部分随机数,利用工具找出seed(种子),然后得到完整的随机数。

2. 将已知的部分伪随机数转化为php_mt_seed工具可以看懂的数据

str1 ='Hg11vtADEm'
str2 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result =''length = str(len(str2)-1)
for i in range(0,len(str1)):for j in range(0,len(str2)):if str1[i] ==  str2[j]:result += str(j) + ' ' +str(j) + ' ' + '0' + ' ' + length + ' 'breakprint(result)

结果:

43 43 0 61 6 6 0 61 27 27 0 61 27 27 0 61 21 21 0 61 19 19 0 61 36 36 0 61 39 39 0 61 40 40 0 61 12 12 0 61

3. 下载php_mt_seed工具并且使用

下载链接:php_mt_seed - PHP mt_rand() seed cracker

在这里插入图片描述
下载后,放入linux环境,并且运行
在这里插入图片描述
得到种子348806110,同时要注意php版本是php7.1以上的。

4. 得到完整字符串

执行代码的环境要是php7.1以上的,我当时就踩了一下这个坑。

<?php
mt_srand(348806110);
$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>";
?> 

我的虚拟机的中php环境是php7.0.33,执行的结果是
在这里插入图片描述
肯定是错的,前10个字符和环境给的就不一样
然后在php7.4环境下运行,结果是对的。
在这里插入图片描述
将完整的字符串提交,就可得到flag.
在这里插入图片描述

参考文章链接

  1. PHP mt_rand安全杂谈及应用场景详解
  2. 「配枪朱丽叶。」
  3. 工具下载链接:php_mt_seed - PHP mt_rand() seed cracker
  4. 2018SWPUCTF-Web全详解
http://www.lbrq.cn/news/1413559.html

相关文章:

  • 免费跨境电商网站/营销策略分析
  • 北京市海淀区网站建设/网络销售平台有哪些软件
  • 网站设计文档/百度学术论文查重官网入口
  • wordpress没有样式/广州seo优化推广
  • 西安手机网站建设公司/电商sem是什么意思
  • 做全网影视网站的风险/如何进行搜索引擎的优化
  • 上海最专业的集团网站建设/培训后的收获和感想
  • 做网站的经历/谷歌流量代理代理
  • 研究生网站建设/武汉seo推广
  • 从零开始网站建设/百度一下你就知道 官网
  • 广告网架/seo推广软件
  • 微信公众平台怎么做微网站/sem是什么意思
  • 哪些网站可以接单做/网站统计平台
  • 商业网站的建设流程/市场营销公司排名
  • 网站制作客户寻找/申请域名的方法和流程
  • 网站怎么做seo、/上海服务政策调整
  • 成都哪里有做网站建设的/成都seo网络优化公司
  • 做网站生意不赚钱/网站权重查询工具
  • 年报是否就是在工商网站做的/怎么搭建一个网站
  • 自己在线制作logo免费下载/百度爱采购怎么优化排名
  • 网站建设 php/做网站推广
  • 什么网站可以接模具做/百度竞价入门教程
  • 哈尔滨自助建站系统/百度搜图匹配相似图片
  • wordpress如何上传视频/湖南正规seo优化
  • 网站的登录注册页面怎么做/万网域名注册官网查询
  • 专业的医疗网站建设/推广营销
  • 网站建设公司该如何选择/bt kitty磁力猫
  • 有免费做理化试验的网站吗/seo英文
  • wordpress站点预览/如何做网络营销?
  • 临清设计网站/汕头网站建设公司哪个好
  • Python day48.
  • 开放最短路径优先协议
  • 说一下事件委托
  • (一)React企业级后台(Axios/localstorage封装/动态侧边栏)
  • C++核心语言元素与构建块全解析:从语法规范到高效设计
  • Spring IOC 学习笔记