题目一览

直接看源码,发现输入的值会被POST的check.php:

访问一下Check.php,给了源码:

分析吧。

分析: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 "

".$str_show."

";

if(isset($_POST[‘num‘])){

if($_POST[‘num‘]===$str){x

echo "

抽奖,就是那么枯燥且无味,给你flag{xxxxxxxxx}

";

}

else{

echo "

没抽中哦,再试试吧

";

}

}

show_source("check.php");

思路是:

如果没有session首先rand()初始化session,然后作为种子传给mt_srand.

之后构造20位密码,只截取前10位给你。

如果最后能POST正确的20位,获得flag。

那么关键就是,要根据给你的10位密码,反推出mt_srand的种子是什么,从而依葫芦画瓢构造私钥。

之前做过的[MRCTF]Ezaudit里学习了这个问题,这回实践一波。

Step 1 因为要交给php_mt_seed去跑,我们先把给的密码转成它能读懂的形式:

$pass = "2dHUhTubvf"; //密钥

$alphabet = ‘abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ‘;//字母表

$len = strlen($alphabet) - 1; //区间长度

for($j = 0; $j < strlen($pass); $j++) //遍历密钥,确定当前字符在密钥的顺序

{

for ($i = 0; $i <= $len; $i++) { //遍历字母表,确定当前字符在字母表的顺序

if($pass[$j] == $alphabet[$i])//是找到了对应的随机数

{

echo "$i $i 0 $len "; //输出符合要求的参数格式

break;

}

}

}

?>

获得结果:

28 28 0 61 3 3 0 61 43 43 0 61 56 56 0 61 7 7 0 61 55 55 0 61 20 20 0 61 1 1 0 61 21 21 0 61 5 5 0 61

Step 2 利用php_mt_seed去爆破种子:

成功获得种子。注意有版本要求 PHP 7.1.0+

Step3 还原:

mt_srand(119825810);

$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 "$str";

?>

用phpstudy环境,在PHP 7.1.13下跑出来的结果:

前10位完美匹配,爆破成功:

Step 4

提交

flag到手:

这道题当初比赛的时候没做出来(整个就做出来一道Web……)。

最近刷了不少题,做到这个了,尝试一波,没想到拿下了。

而且还考的是之前刷题时研究过的知识点。挺高兴的,记录一下!希望之后更进一步!

php伪随机数 ctf,[GWCTF 2019]枯燥的抽奖相关推荐

  1. [GWCTF 2019]枯燥的抽奖

    [GWCTF 2019]枯燥的抽奖 知识点:伪随机数构造 文章目录 [GWCTF 2019]枯燥的抽奖 解题过程 1. 伪随机数(引用上面的链接内容) 2. 将已知的部分伪随机数转化为php_mt_s ...

  2. [GWCTF 2019]枯燥的抽奖 1——php_mt_seed

    又是一道php伪随机数 记录它不是因为难 而是看到wp里有个比较好的脚本 遂收藏一波 (上一次做伪随机数的脚本都找不到了QWQ 编程能力是硬伤QWQ tcl) <?php #这不是抽奖程序的源代 ...

  3. [GWCTF 2019]枯燥的抽奖 1

    周末时间,抽个奖助助兴! 打开题目,发现是一个猜字符串的游戏,就问你枯不枯燥? 看到这想都不用想,CTRL+U查看后台代码,果然不出所料,发现了存在check.php 通过代码审计并结合题目来看,这是 ...

  4. [wp][GWCTF 2019]枯燥的抽奖

    感觉网上的wp互相抄的写得不明不白,只简单说下我对这题的理解,如有错误地方望各位师傅指正 <?php #这不是抽奖程序的源代码!不许看! header("Content-Type: t ...

  5. 【代码审计】buu_[GWCTF 2019]枯燥的抽奖

    1.根据提示出前十位的号码,猜测应该需要爆破后面十位,抓包发现发送到check.php: 2.跟进查看代码: 原理:因为代码中是通过种子seed生成了随机数,但是mt_srand()这个函数存在漏洞, ...

  6. BUUCTF--[GWCTF 2019]枯燥的抽奖

    此题与BUUCTF--[MRCTF2020]Ezaudit类似 利用dirsearch扫描到check.php查看源码 <?php #这不是抽奖程序的源代码!不许看! header(" ...

  7. [GWCTF 2019]babyvm

    系统学习vm虚拟机逆向 64位vm的题目 找到主函数 分析sub_CD1函数: sub_B5F代表mov操作,其中 0xE1,0xE2...代表不同的寄存器. sub_A64是一个异或操作xor. s ...

  8. [GWCTF 2019]pyre.pyc [CISCN2018]2ex

    文章目录 [GWCTF 2019]pyre.pyc 反编译 脚本 [CISCN2018]2ex 查看txt 分析 [GWCTF 2019]pyre.pyc 反编译 uncompyle6 pyre.py ...

  9. BUUCTF RE WP31-32 [WUSTCTF2020]level1、[GWCTF 2019]xxor

    31.[WUSTCTF2020]level1 得到的 flag 请包上 flag{} 提交. 感谢 Iven Huang 师傅供题. 比赛平台:https://ctfgame.w-ais.cn/ 给了 ...

  10. [BUUCTF]REVERSE——[GWCTF 2019]pyre

    [GWCTF 2019]pyre 附件 步骤: 1.附件是pyc文件,用python打不开,百度后得知用python反编译工具打开,分享一个python反编译在线网站 反编译后是这段代码 #!/usr ...

最新文章

  1. 提取点的dn值_干货在线 | DEM数据如何生成高程点
  2. DC/DC变换器的典型拓扑
  3. Kafka分区分配策略(4)——分配的实施
  4. pom添加依赖后不报错但是代码依然缺少依赖
  5. 虚拟桌面的备份恢复最佳实践 第二部分
  6. Python 中xrange和range区别
  7. Git submodule 知识总结
  8. 380免费云存储_从四个方面分析:云存储服务的特点、影响
  9. Java接口xss,Java审计之XSS篇
  10. kotlin中的异常处理_Kotlin异常处理
  11. ubuntu报错:RuntimeError : unexcepted EOF, excepted 2599001 more bytes. The file might be corrupted.
  12. 如何在Mac上恢复未保存的word文档
  13. 记dubbo consumer服务因订阅其他有异常的服务导致超时的问题
  14. 广东未来科技:书写立体显示事业传奇的行业独角兽
  15. 乔布斯当场“复活”,苹果发AirPods 3和地表最强电脑芯片,秀刘海屏Macbook Pro
  16. java 记录微信转发次数_微信分享追踪分析系统 ,可以精细统计朋友圈访客来访次数及时间和转发...
  17. 解决win10自带播放器 HEVC视频扩展 需付费方法
  18. iApp4Me一周年记
  19. 《代号:魂之刃2》- 身处黑暗的勇者游戏
  20. 搭建SpringBoot+Vue 项目 完整流程

热门文章

  1. oracle delete循环删除_oracle性能优化:高水位线(HWM)详解--如何计算HWM
  2. Protable 自定义添加搜索栏和toolbar
  3. 7-6 What is a computer? (5 分)
  4. Android CheckBox 实战
  5. 实现对接顺丰业务的订单管理系统
  6. 机器学习实战Ch02: k-近邻算法
  7. c++实现gray code(格雷码)
  8. ubuntu jdk 安装 【转载】
  9. lighttpd + php for android
  10. jQuery – 6.选择器