首页 > 其他分享 >[GWCTF 2019]枯燥的抽奖

[GWCTF 2019]枯燥的抽奖

时间:2024-05-19 10:52:13浏览次数:27  
标签:mt 枯燥 61 GWCTF seed 2019 str 字符串 php

[GWCTF 2019]枯燥的抽奖

打开环境,提示猜测完整字符串

1-OJH_OaVxNWEcrIGNvINRDBu72XxqNm3l74bcW_abc

在源代码中发现有个check.php文件

PdY0BFRqcoeFC__efHbF_q7RIkJPk1EouqxgFw2SDHc

打开直接看到源码

EXGKkC3Mlx0OzLdnwQjnE1kgdijnxHHtnoqKnHbqxvg

<?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){x
        echo "<p id=flag>抽奖,就是那么枯燥且无味,给你flag{xxxxxxxxx}</p>";
    }
    else{
        echo "<p id=flag>没抽中哦,再试试吧</p>";
    }
}
show_source("check.php");

可以注意到我们猜测字符串是采用伪随机函数依据种子生成的,所以我们可以利用脚本通过给出的部分字符串逆推出伪随机函数采用的种子(这里脚本采用的是php_mt_seed)。

先使用PHP编写程序把给出的部分字符串处理成脚本需要的数据格式,php_mt_seed工具需要我们提供随机数前十位,这里正好十位,所以我们用脚本转10进制,程序源码如下:

str1 ='RjLPc2jmUg'
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 + ' '
            break


print(result)

得到结果

53 53 0 61 9 9 0 61 47 47 0 61 51 51 0 61 2 2 0 61 28 28 0 61 9 9 0 61 12 12 0 61 56 56 0 61 6 6 0 61

下载php_mt_seed工具并且使用https://www.openwall.com/php_mt_seed/

Y2nlkOB2smffoCyPvEVjY7G3dywmZc_GtPX0D0WUIn0

php_mt_rand 工具只能用于爆破mt_rand()函数产生的随机数的种子值, 无论是否显式调用mt_srand()函数播种,但不能用于mt_rand(1,1000)这种指定范围的和rand函数的爆破

第一次输入make生成php_mt_seed文件,然后直接./php_mt_seed + 随机数,注意先进入root权限再执行命令:

4fB3_HJ26kGe_TzpPVxA9W1fTHtHhs9VhbOAiUWvYgA

得到种子为856151724

7tFL-_XfrjYeNZLVR-C8u2RBeOxAaOVAd2i1CeWFR8Q

接着放到PHP环境里执行代码,这里注意PHP版本要高于7.1

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

得到完整字符串为RjLPc2jmUgtGjKtpixK4

EjKPNqCcqDGAFPc5BXCVScVwWMdTPa_nxqLXSCMwZK8

回到题目中输入,发现错误,这时靶机超时了,重新打开再走一遍流程

rsWwQXMDxWKIT8cS7ISn213uGYN1QqXf1vnCsof-he0

跑脚本

28 28 0 61 25 25 0 61 9 9 0 61 26 26 0 61 34 34 0 61 19 19 0 61 54 54 0 61 4 4 0 61 21 21 0 61 50 50 0 61

c6315Er6q7sMGHzpMyYJy9DuC35Bxveg6CO6rQosxQM

得到种子660921344,放入脚本后得到完整字符串2zj08tSevOnEiEErtbym

T0kjM0X5govVj7KqvhX5pACaOysh63uPcY71D1O_OtE

再次尝试发现这里要求输入的是完整的字符串,而之前自己只是把后半段输入导致出错,真是哭笑不得

标签:mt,枯燥,61,GWCTF,seed,2019,str,字符串,php
From: https://www.cnblogs.com/fishjumpriver/p/18200118

相关文章

  • P8684 [蓝桥杯 2019 省 B] 灵能传输 题解
    题目传送门本题涉及到了\(3\)种算法:前缀和,排序以及贪心。(1)前缀和本题实际上要求通过某种灵能传输可以使得该序列的最大值最小。而由前缀和可知,当某一个前缀和序列保持有序(或前缀和序列表示的函数单调)时,其\(s[i]-s[i-1]\)的最大值可以达到最小。通过对几个样例的观察......
  • P8679 [蓝桥杯 2019 省 B] 填空问题 题解
    题目传送门试题A:组队【解析】本题是一道经典的DFS搜索题,每次对各号位的选手进行DFS,找到各号位上有成绩的选手时再进行进一步搜索即可。【程序】#include<bits/stdc++.h>usingnamespacestd;intteam[20][6];intmax_sum;boolvis[20];voiddfs(intu,intsu......
  • c#2019创建webservice服务
    VS2019创建WebService服务接口 一、创建并启动项目 添加新建项 默认ASMX文件内容 启动项目,报localhost的被拦截。需要注意一下创建项目时是否开启了高级中的https,如果不记得也没有关系,直接打开项目的属性,修改Web中的项目URL,将https改为http,重新启动项目即可。 再......
  • 强网杯(2019)随便注
    强网杯(2019)随便注1.随便提交一个1,发现返回数据,猜测是sql注入:2.尝试使用select注入,发现过滤的黑名单:3.竟然没有过滤分号,那么我们可以使用堆叠注入,首先来找到所有的数据库名:';showdatabases;4.继续读取当前数据库所有的表名:';showtables;5.继续读取当前数据库"1919......
  • Windows 2019 2022 语言包下载地址
      2019大语言包 https://software-static.download.prss.microsoft.com/pr/download/17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_MULTI.iso https://software-download.microsoft.com/download/pr/17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_......
  • RCTF 2019]Nextphp 利用phpFFI来绕过 disable_functions限制
    今天做了一道RCE+反序列化的题目,看看吧。进入题目就给出了源码点击查看代码<?phpif(isset($_GET['a'])){eval($_GET['a']);}else{show_source(__FILE__);}Rce看看,发现许多函数都被dis掉了,试试无参数rce。发现了当前目录的一些文件(1.txt是我弄上去的,......
  • Netgear无线路由器漏洞复现(CVE-2019-20760)
    漏洞概述漏洞服务: uhttpd漏洞类型: 远程命令执行影响范围: 1.0.4.26之前的NETGEARR9000设备会受到身份验证绕过的影响解决建议: 更新版本漏洞复现操作环境: ubuntu:22.04qemu-version: 8.1.1仿真环境wgethttps://www.downloads.netgear.com/files/GDC/R9000/R9000-V1.......
  • sqlserver2019安装
    说明:新版sqlserver安装分两部分:第一部分安装服务 第二部分安装管理工具 第一步:下载安装包 ed2k://|file|cn_office_professional_plus_2019_x86_x64_dvd_5e5be643.iso|3775004672|1E4FFA5240F21F60DC027F73F1C62FF4|/第二步:安装服务这里注意:    推荐第一种安......
  • buuctf-pwn-ciscn_2019_es_2
    checksecida我们看到在vul函数中,有两个read函数,每个都读取了0x30(48)大小的字符,并放入字符数组s中,也就是说我们能溢出的只有8个字节,刚好覆盖到ebp和返回地址所以我们需要栈迁移,使我们能溢出更多字节首先利用第一个read,输入40字节的数据,刚好覆盖到ebp,然后printf就会顺带打印......
  • cinder2019#bug
    OpenStack#bug2019888处理对于2023年5月10日之后的所有OpenStack版本,需要将Nova配置为向Cinder发送服务令牌,并让Cinder接收它。这是CVE-2023-2088修复程序所要求的。有关详细信息,请参阅OSSA-2023-003。nova配置vim/etc/nova/nova.conf'''[DEFAULT]'''ser......