[GWCTF 2019]枯燥的抽奖
目录
信息收集
知识回顾
解题思路
信息收集
查看源码,发现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 "<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");
前面十位为fEKmCvV9En
这里和之前写过的随机数安全那篇文章思路一样
知识回顾
- mt_srand
mt_srand([ int $seed] ) : void
用 seed 来给随机数发生器播种。 没有设定 seed 参数时,会被设为随时数。使用者在进行一次mt_srand()操作后,seed数值将被固定下来,给接下来的mt_rand()函数使用。
- mt_rand()存在的问题
由于mt_rand()的生成的随机数只跟seed和调用该函数的次数有关。举一个简单的例子来说明一下这个问题,假设使用mt_srand(1111111)进行了一次播种操作,接下来调用mt_rand()函数,第一次生成的数值为a,第二次生成的为b,第三次生成的为c。任何一个人拿到这样的一串代码,所执行的结果都是跟刚刚描述的一样。所以当你的seed数值被他人知道后,就可以预测出你接下来的数值是多少,这就是该函数的一个问题,他并不能起到一个真随机数的作用。
解题思路
先用py脚本跑下可识别数组
5 5 0 61 40 40 0 61 46 46 0 61 12 12 0 61 38 38 0 61 21 21 0 61 57 57 0 61 35 35 0 61 40 40 0 61 13 13 0 61
用php_mt_seed来跑种子
seed = 0x052bdfcb = 86761419 (PHP 7.1.0+)
我们在本地开一个对应高版本的php来算出剩下的十位
因此完成的密钥为
fEKmCvV9Eng6j2wjv1Ek
提交获得flag
相关文章:
【机器学习】第二节-如何选择和评估模型
目录一、经验误差与过拟合错误率精度误差训练误差/经验误差度量指标泛化误差欠拟合过拟合二、评估方法专家样本1.留出法(1)单次留出法(2)多次留出法2.交叉验证(1)k折交叉验证(2)留一法(3)P次k折交叉验证3.自助法三、性能度量四、偏差与方差 一、经验误差与过拟合 错误率 分类错…...
P4168 [Violet] 蒲公英(题解)
题目 题目描述输入格式输出格式数据范围 ![] 样例 输入: 6 3 1 2 3 2 1 2 1 5 3 6 1 5 输出: 1 2 1思路 暴力 本题求区间内的最小众数,容易想到去用数组sum[i]表示第i种花的个数,在去便利比较,但是复杂度nm一定会T,这时候就要对暴力进行优化。 分块优化1 如果我们将…...
数学分析复习:导数、微分、极值
文章目录 本篇文章适合个人复习翻阅,不建议新手入门使用 定义:导数 设 f f f 是定义在区间 I ⊂ R I\subset R I⊂R 上的实值函数, x 0 ∈ I x_0\in I x0∈I 是一个给定的点,若极限 lim h → 0 f ( x 0 h ) − f ( x 0 )…...
CSS简单的选择器
标签选择器 与网页元素同名的选择器。常用于与设置网页默认效果,或者统一常用元素的基本样式。 p{font-size:10px; }类选择器 可以为网页对象定义不同的样式,实现不同元素拥有相同的样式,相同元素的不同对象拥有不同…...
C++的线程
#include<iostream> #include<thread> #include<unistd.h> using namespace std; void myrun() {while(true){cout<<"I am a thread"<<endl;sleep(1);} } int main() {thread t(myrun);t.join();return 0; } 如果不添加-lpthread就会报…...
CXF WebService wsdl2java
下载 apache-cxf-3.3.1 并解压到bin 目录下,输入生成命令 wsdl2java -encoding utf-8 -d D:\Software\Webservice\ws http://XXX.XXX.XXX.XXX:XXX/WSInterface.asmx?wsdl把生成的文件,复制到项目中,进行后续编码本文来自博客园,作者:VipSoft 转载请注明原文链接:https:…...
[GWCTF 2019]枯燥的抽奖
目录 信息收集 知识回顾 解题思路 信息收集 查看源码,发现check.php <?php #这不是抽奖程序的源代码!不许看! header("Content-Type: text/html;charsetutf-8"); session_start(); if(!isset($_SESSION[seed])){ $_SESSIO…...
初入职场的我认识到linux的重要性
先自我介绍下,我是一名普通的软件工程专业的本科毕业生,今年刚毕业,软件工程的课程超级多,有程序设计基础、面向对象程序设计、软件工程导论、离散结构、数据结构与算法、计算机系统基础、操作系统、数据库概论、网络及其计算等等…...
数据库系统概述
文章目录一、数据、数据库、数据库管理系统、数据库系统1.数据2.数据库(DB)3.数据库管理系统(DBMS)1)数据定义2)数据组织、存储和管理3)数据操纵4)事务管理和运行管理5)数…...
【算法基础】快速排序(分治思想)
一、快速排序原理 1. 算法介绍 快速排序算法通过多次比较和交换来实现排序,其排序流程如下: (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(记左端为L,最右端为R) 分界点的选取有如下四种方法:(1)q[L];(2)q[(L+R)/2];(3)q[R];(4)随机选取 (2)…...
JavaEE-初识网络
目录一、局域网二、广域网三、网络通信基础3.1 IP地址3.2 端口号3.3 协议四、协议分层五、封装和分用一、局域网 局域网,网络种类,覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点使其在各类办公室内运用广泛。局…...
【23】C语言 | 初阶结构体
目录 1、结构的基础知识 2、结构成员的类型 3、结构体初始化 4、结构体的访问 5、结构体传参 1、结构的基础知识 结构是这些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量 数组:一组相同类型的元素的集合 结构体:也是…...
【笔记】SemGCN
一. 论文总结 1.1 核心贡献 提出了一种改进的图卷积操作,称为语义图卷积(SemGConv),它源自cnn。其关键思想是学习图中暗示的边的信道权值,然后将它们与核矩阵结合起来。这大大提高了图卷积的能力。其次,我们引入了SemGCN&#x…...
Python机器学习:一元回归
→\rightarrow→回归效果评价 🌕 一元回归 一元回归主要研究一个自变量和一个因变量之间的关系,而这个自变量和因变量之间的关系又可分为线性回归和非线性回归。 ⭐️ 一元线性回归分析两个变量之间的线性关系,如ykxbykxbykxb中xxx和yyy就是…...
四轮两驱小车(三):STM32驱动MPU6050进行转弯
前言: 寒假已经过了一半了,前段时间跟学弟一起从零开始搞了一下深度学习,现在才想起来这个系列还没有更完。本篇博客主要介绍一下这个小车转直角弯的神器----MPU6050 MPU6050介绍: 我所采用的MPU6050是某宝上十几块钱的这种&…...
C++:类的static成员,友元和构造函数初始化列表
目录 一.类的构造函数的初始化列表 1.类的构造函数初始化列表的引入和介绍 2.初始化列表用于类的类对象成员的拷贝构造函数的调用 3.初始化列表的使用细则 4.使用初始化列表的一个注意事项 二.explicit关键字 三.C类的static成员 1.类中static修饰的成员变量 2.类中st…...
用友U8和旺店通企业版淘宝奇门单据接口集成
用友U8和旺店通企业奇门单据接口集成对接系统:旺店通企业奇门慧策最先以旺店通ERP切入商家核心管理痛点——订单管理,之后围绕电商经营管理中的核心管理诉求,先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺店通E…...
Java-黑马Java学习作业-day11集合学生管理系统
学习视频链接:https://www.bilibili.com/video/BV17F411T7Ao 文章目录题目1-将数组存放在集合中题目2-教师信息查看题目3-员工信息删改查操作题目4(综合)-图书管理系统题目1-将数组存放在集合中 现有如下字符串元素:[“aaa”, “…...
【Linux】冯诺依曼体系结构与操作系统概念理解
👑作者主页:安 度 因 🏠学习社区:StackFrame 📖专栏链接:Linux 文章目录一、前言二、冯诺依曼体系结构1、体系简述2、内存的重要性3、硬件方案解释软件行为4、体系结构中的数据流动5、拓展三、操作系统简述…...
protegeproject/mapping-masterPublic
protegeproject/mapping-masterPublicWatch 10 Fork 7Fork your own copy of protegeproject/mapping-masterStar 44CodeIssues15Pull requests3ActionsProjectsWikiSecurityInsightsMappingMasterDSL编辑新页面马丁奥康纳编辑了此页面 on Oct 29, 2020 85 修订页面4家Mapping…...
大数据分析案例-基于随机森林算法构建人口普查分析模型
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
【数据结构和算法】认识线性表中的链表,并实现单向链表
本文接着上文,上文我们认识了线性表的概念,并实现了静态、动态顺序表。接下来我们认识一个新概念链表。并实现单向链表的各种操作。顺序表还有不明白的看这一篇文章 (13条消息) 【数据结构和算法】实现线性表中的静态、动态顺序表_小王学代码的博客-CSDN…...
2023-1-28
具有给定数值的最小字符串 题目描述 小写字符 的 数值 是它在字母表中的位置(从 1 开始),因此 a 的数值为 1 ,b 的数值为 2 ,c 的数值为 3 ,以此类推。 字符串由若干小写字符组成,字符串的数…...
Linux_常见命令
1.ls ls -l 列出隐藏文件,并显示10项权限,类似如同下图 在部分发行版本的linux下,ll等同于ls -l 首先,第一列为-则代表着这一列是文件, 第一列为d则代表这一列为目录 除了第一位,那么其他还有9位,分为3组…...
【Linux】基础IO --- 系统级文件接口、文件描述符表、文件控制块、fd分配规则、重定向…
能一个人走的路别抱有任何期待,死不了 文章目录一、关于文件的重新认识二、语言和系统级的文件操作(语言和系统的联系)1.C语言文件操作接口(语言级别)1.1 文件的打开方式1.2 文件操作的相关函数1.3 细节问题2.系统级文…...
ffmpeg无损裁剪、合并视频
我用的版本是 ffmpeg version git-2020-06-23-ce297b4 官方文档 https://ffmpeg.org/ffmpeg-utils.html#time-duration-syntax 时间格式 [-][HH:]MM:SS[.m...] 或 [-]S[.m...][s|ms|us]裁剪视频 假设需要裁剪视频aaa.mp4,第5秒到第15秒 ffmpeg -ss 5 -to 15 -i…...
ATAC-seq分析:Annotating Peaks(9)
1. 注释开放区域 将已识别的无核小体区域与基因组特征(如基因和增强子)相关联通常很有趣。 一旦注释到基因或增强子的基因,我们就可以开始将 ATACseq 数据与这些基因的特征相关联。 (功能注释、表达变化、其他表观遗传状态&#x…...
蓝桥杯刷题015——最少刷题数(二分法+前缀和)
问题描述 小蓝老师教的编程课有 N 名学生, 编号依次是 1…N 。第 i 号学生这学期刷题的数量是 Ai 。 对于每一名学生, 请你计算他至少还要再刷多少道题, 才能使得全班刷题比他多的学生数不超过刷题比他少的学生数。 输入格式 第一行包含一个正整数 N 。 第二行包含 N 个整数:…...
Linux——进程
目录 冯诺依曼体系结构 操作系统(Operator System) 概念 设计OS的目的 定位 如何理解 "管理" 总结 系统调用和库函数概念 承上启下 进程 基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 组织进程 查看进程 通过系统调用获取进程…...
Junit单元测试框架【基础篇】
Junit单元测试框架【基础篇】🍎一.Junit单元测试框架🍒1.1 注解🍒1.2 断言🍒1.3 用例执行顺序🍒1.4 测试套件🍉1.4.1 指定类🍉1.4.1 指定包🍒1.5 参数化🍉1.5.1 单参数&a…...
高通平台开发系列讲解(WIFI篇)什么是WLAN无线局域网
文章目录 一、什么是WLAN1.1、WLAN发展史1.2、WLAN工作频段二、高通相关文件2.1、配置文件2.2、开机启动2.3、wpa_supplicant沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文将基于高通平台介绍什么是无线局域网。 一、什么是WLAN 在WLAN领域被大规模推广和商用的是…...
JavaScript 变量
JavaScript 变量 变量是什么? 变量是计算机中用来存储数据的“容器”,它可以让计算机变得有记忆,通俗的理解变量就是使用【某个符号】来代表【某个具体的数值】(数据) JavaScript 变量 与代数一样,JavaScript 变量…...
C语言进阶——文件管理
每当我们写好一段代码运行结束之后,再次运行的时候就会发现,之前在终端上输入的数据都会消失,那么如何把之前输入的数据保存下来呢? 我们一般把数据持久化的方式有把数据存放在磁盘文件中、存放到数据库。打印等方式进行保存。 …...
[Rust笔记] 规则宏的“卫生保健”
规则宏代码的“卫生保健”规则宏mbe即是由macro_rules!宏所定义的宏。它的英文全称是Macro By Example。相比近乎“徒手攀岩”的Cpp模板元编程,rustc提供了有限的编译时宏代码检查功能(名曰:Mixed Hygiene宏的混合保健)。因为rust…...
芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点
💡该教程为改进进阶指南,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀💡本篇文章 基于 YOLOv5、YOLOv7芒果改进YOLO系列:芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点、…...
Java---微服务---RabbitMQ部署
RabbitMQ部署1.单机部署1.1.下载镜像1.2.安装MQ1.3访问管理端2.集群部署2.1.集群分类2.2.设置网络1.单机部署 我们在Centos7虚拟机中使用Docker来安装,如未安装dockr,请参考《Centos7安装Docker》 1.1.下载镜像 方式一:在线拉取 docker …...
别总写代码,这130个网站比涨工资都重要
今天推荐一些学习资源给大家,当然大家可以留言评论自己发现的优秀资源地址 搞学习 找书籍 冷知识 / 黑科技 写代码 资源搜索 小工具 导航页(工具集) 看视频 学设计 搞文档 找图片 搞学习 TED(最优质的演讲)࿱…...
Python 类方法简记
文章目录前言必须实例化的类方法使用静态装饰器的类方法使用类装饰器的类方法省流版本ref:前言 Python 的类可以有特定的方法。下面是三种设计类方法的模板。 class A(object):a adef foo1(self, name):print hello, namestaticmethoddef foo2(name):print hello, nameprint…...
分享136个ASP源码,总有一款适合您
ASP源码 分享136个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 136个ASP源码下载链接:https://pan.baidu.com/s/11db_K2QXns5pm8vMZBVPSw?pwds0lb 提取码&#x…...
【Python百日进阶-Web开发-Peewee】Day241 - Peewee 安装和测试、快速开始
文章目录 一、安装和测试1.1 使用 git 安装1.2 运行测试1.3 可选依赖项1.4 关于 SQLite 扩展的注意事项二、快速开始2.1 模型定义2.2 存储数据2.3 检索数据2.3.1 获取单条记录2.3.2 记录列表2.3.3 排序2.3.4 组合过滤器表达式2.3.5 聚合和预取2.3.6 SQL 函数2.4 数据库2.4.1 使…...
手机提供GMS支持(适用安卓和鸿蒙系统)
手机提供GMS支持 - 适用安卓和鸿蒙系统前言方式1:安装GMS套件(不推荐)方式2:安装OurPlay(推荐)方式3:安装Gspace(推荐)前言 本文提供多种为手机(安卓和鸿蒙系…...
[JavaEE]线程池
专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1. 线程池是什么? 2. 线程池的实现原理 3. 标准…...
Redis缓存污染了怎么办?
我们应用Redis缓存时,如果能缓存会被反复访问的数据,那就能加速业务应用的访问,但是,如果发生了缓存污染,那么,缓存对业务应用的加速作用就减少了。 在一些场景下,有些数据被访问的次数非常小&…...
特斯拉印证成本仍是工业制造取胜的关键,反证中国制造的优势
近20年来,业界对于工业制造的竞争优势开始逐渐偏离成本控制,然而如今特斯拉在全球的成功却正在印证着工业制造的成功仍然在于成本,成本才是工业制造取胜的关键,其他任何被吹嘘的个性化、创新等全都是骗人的把戏。特斯拉的成功曾被…...
工具及方法 - 斗地主技巧
斗地主游戏起源 斗地主是流行于湖北武汉、汉阳一带的一种扑克游戏。游戏需由3个玩家进行,用一副54张牌(连鬼牌),其中一方为地主,其余两家为另一方,双方对战,先出完牌的一方获胜。斗地主起源于湖北武汉汉阳一带…...
BIO NIO AIO IO多路复用的区别
1、基础概念 1.1、阻塞非阻塞和同步异步的结合 下面通过例子来具体说明: 同步阻塞: 小明一直盯着下载进度条,到100%的时候完成。 同步体现在:小明关注下载进度条并等待完成通知。(可以看成同步是我主动关注任务完成的…...
数学建模——降维算法
降维 降维的意义 降低无效、错误数据对建模的影响,提高建模的准确性少量切具有代表性的数据将大幅缩减挖掘所需的时间降低存储数据的成本 需要降维的情况 维度灾难。很难有一个简洁的模型在高维空间中依旧具有鲁棒性,而随着模型复杂度的增加…...
04_iic子系统
总结 iic_client和iic_driver 加入iic总线的思想和paltform总线的玩法一样 把iic设备和驱动注册到iic总线中 构造出字符设备驱动和设备节点供app进行操作 但是iic硬件设备是挂在iic控制器下面的 所以iic控制器也会有自己的驱动和设备树节点 厂家一般都会帮做好 我们写的iic_dr…...
离散系统的数字PID控制仿真-3
离散PID控制的封装界面如图1所示,在该界面中可设定PID的三个系数、采样时间及控制输入的上下界。仿真结果如图2所示。图1 离散PID控制的封装界面图2 阶跃响应结果仿真图:离散PID控制的比例、积分和微分三项分别由Simulink模块实现。离散PID控制器仿真图&…...
如何好好说话-第12章 理清楚问题就是答案
生活中该不该积极主动与别人展开社交活动?有些时候社交活动并不开心,仅仅只是无聊的闲才。但他确实能拉拢人际关系,帮我们获得近身套路。而且有一种观点认为不善于社交的人是不成功的。注意以上说的这些都是偏见。当我们站在一个更高的维度认…...
ice规则引擎==启动流程和源码分析
启动 git clone代码 创建数据库ice,执行ice server里的sql,修改ice server的配置文件中的数据库信息 启动ice server 和ice test 访问ice server localhost:8121 新增一个app,默认给了个id为1,这个1可以看到在ice test的配置文件中指定…...
进度管理(上)
规划进度管理 定义:规划进度管理是为实施项目进度管理制定计划的过程。 输入: 1、项目管理计划 2、项目章程(包含里程碑,这个和规划进度有直接干系) 3、组织过程资产 4、事业环境因素。 输出:进度管…...
2021 XV6 8:locks
实验有两个任务,都是为了减少锁的竞争从而提高运行效率。Memory allocator一开始我们是有个双向链表用来存储空闲的内存块,如果很多个进程要竞争这一个链表,就会把效率降低很多。所以我们把链表拆成每个CPU一个,在申请内存的时候就…...
JUC面试(十一)——LockSupport
可重入锁 可重入锁又名递归锁 是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提,锁对象得是同一个对象),不会因为之前已经获取过的锁还没释放而阻塞。 Java中ReentrantLock和synchronized都是可重入锁&am…...
Datawhale 202301 设计模式 | 人工智能 现代方法 习题
Exercise 1 绪论 Q:用您自己的话来定义:(a)智能,(b)人工智能,(c)智能体,(d)理性,(e)逻…...
k8s安装dashboard面板
k8s dashboard github地址:https://github.com/kubernetes/dashboard注意:dashboard版本要和k8s版本匹配,具体参考release里的Compatibility:https://github.com/kubernetes/dashboard/releases安装命令wget https://raw.githubus…...
Ubuntu22.04.4 - 网络配置 - 笔记
一、设置固定ip 1、cd /etc/netplan 查看文件夹下的配置文件 我这里叫 00-installer-config.yaml 2、sudo nano /etc/netplan/00-installer-config.yaml 完成配置后,按下Ctrl O保存更改,然后按下Ctrl X退出nano编辑器。 3、sudo netplan apply 4、ip …...
MongoDB聚合运算符:$reverseArray
MongoDB聚合运算符:$reverseArray 文章目录 MongoDB聚合运算符:$reverseArray语法使用举例 $reverseArray聚合运算符接受数组表达式作为参数,并返回一个元素按相反顺序排列的数组。 语法 { $reverseArray: <array expression> }参数可…...
2024年开一家自助棋牌室要花多少钱?-附花费清单
今天抽时间算了算开自助棋牌室的成本 大差不差就是这些,大头的话就是: 房租、装修和设备 还有一些安装费用差不多是花了4k左右 其实总的价格已经10w 从开棋牌室到现在,过程是很辛苦的,结果还是很满意的! 如果想开棋牌室…...
String替换术:深入探索Java String类的替换方法
1. 概述 Java的String类提供了三种替换方法:replace()、replaceAll()和replaceFirst()。这些方法用于将字符串中的指定字符或子串替换为新的字符或子串。了解和正确使用这些方法有助于提高应用程序的性能和减少内存占用。 2. replace()方法详解 replace() 方法用于…...
Go 单元测试之Mysql数据库集成测试
文章目录 一、 sqlmock介绍二、安装三、基本用法四、一个小案例五、Gorm 初始化注意点 一、 sqlmock介绍 sqlmock 是一个用于测试数据库交互的 Go 模拟库。它可以模拟 SQL 查询、插入、更新等操作,并且可以验证 SQL 语句的执行情况,非常适合用于单元测试…...
【Node.js】Node.js的安装与配置
目录 1. 下载 Node.js 2. 安装 Node.js 3. 验证安装 4. 配置 npm 5. 环境变量配置(可选) 6. 验证配置 安装和配置 Node.js 主要涉及以下几个步骤: 1. 下载 Node.js 首先,你需要从 Node.js 官方网站(https://no…...