ctf-web23

news/2024/5/20 0:06:13 标签: ctf, php

web23

substr

substr:字符串截取;substr()函数可以用于字符串处理、数据清洗、数据挖掘等领域。

substr(abcdef,2,2)返回值cd

PHP intval() 函数

​编辑PHP 可用的函数

intval() 函数用于获取变量的整数值。

intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

PHP 4, PHP 5, PHP 7

语法

int intval ( mixed $var [, int $base = 10 ] )

参数说明:

  • $var:要转换成 integer 的数量值。
  • $base:转化所使用的进制。

如果 base 是 0,通过检测 var 的格式来决定使用的进制:

  • 如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,
  • 如果字符串以 "0" 开始,使用 8 进制(octal);否则,
  • 将使用 10 进制 (decimal)。

返回值

成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1。

最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例,在这样的系统上, intval('1000000000000') 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。

字符串有可能返回 0,虽然取决于字符串最左侧的字符。

Token是什么?

所谓的Token,其实就是服务端生成的一串加密字符串、以作客户端进行请求的一个“令牌”

根据题目源代码

我们直接用源代码跑出结果

配置phpstudy,在vscode上配置php环境(推荐云之君若雨博主的文章,写的很详细)

在www下新建my-php文件夹,再创建一个.php文件,跑如下代码,

php"><?php
for($i=0; $i<10000; $i++){
    $token = md5($i);
    if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
        if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
            echo'token='.$i.'md5='.$token;
        }
    }  
}

phpstudy里面打开网站,

在如下格式访问

得到结果

url/?token=####得到flag


http://www.niftyadmin.cn/n/5432903.html

相关文章

网络管理基础

Linux网络管理 1.网络管理概念 网络接口和名称 &#xff1a;网卡 ip地址 网关 主机名称 路由2.管理工具 net-tools: #安装包 ifconfig netstat 准备要废掉了。iproute: #安装包 ip #提供ip命令3.认识网卡 lo网卡 :本地回环网卡&#xff0c;本机上的服务自己访问自…

Node.js 自带的 http 模块来实现一个简单的本地服务器

1.创建一个 server.js 文件&#xff1a; const http require(http); const fs require(fs); const path require(path);const server http.createServer((req, res) > {// 获取请求的文件路径const filePath path.join(__dirname, dist, req.url);// 读取文件内容并返…

第18节 动态规划一讲

1假设有排成一行的N个位置记为1~N&#xff0c;N一定大于或等于2 开始时机器人在其中的M位置上(M一定是1~N中的一个) 如果机器人来到1位置&#xff0c;那么下一步只能往右来到2位置&#xff1b; 如果机器人来到N位置&#xff0c;那么下一步只能往左来到N-1位置&#xff1b; 如果…

C#控制台贪吃蛇

Console.Write("");// 第一次生成食物位置 // 随机生成一个食物的位置 // 食物生成完成后判断食物生成的位置与现在的蛇的身体或者障碍物有冲突 // 食物的位置与蛇的身体或者障碍物冲突了&#xff0c;那么一直重新生成食物&#xff0c;直到生成不冲突…

sqlplus设置提示符

作为DBA&#xff0c;需要管理好多数据库&#xff0c;经常会有一台服务器安装多个oracle实例的情况&#xff0c;为避免误操作实例&#xff0c;我们需要在执行sqkplus前&#xff0c;先通过$ echo $ORACLE_SID或 SQL>select name from v$database查看当前实例&#xff0c;这样难…

数据仓库的设计开发应用(三)

目录 五、数据仓库的实施&#xff08;一&#xff09;数据仓库的创建&#xff08;二&#xff09;数据抽取转换加载 六、数据仓库系统的开发&#xff08;一&#xff09;开发任务&#xff08;二&#xff09;开发方法&#xff08;三&#xff09;系统测试 七、数据仓库系统的应用&am…

深度学习pytorch——索引与切片

indexing import torch a torch.rand(4,3,28,28) # 表示4张28*28的rgb图 print(a[0].shape) # a[0]获得第一张图片 print(a[0,0].shape) # a[0,0]获得第一张图片的r图 print(a[0,0,2,4]) # 获得第一张图片第一个通道的一个像素点&#xf…

JUnit 面试题及答案整理,最新面试题

JUnit中的断言&#xff08;Assert&#xff09;有哪些类型&#xff1f; JUnit提供了多种断言类型来帮助测试代码的正确性。常见的断言类型包括&#xff1a; 1、assertEquals&#xff1a; 用于检查两个值是否相等。如果不相等&#xff0c;测试失败。 2、assertTrue和assertFal…