首页 > 编程语言 >CTFer blogs--Web-easyphp

CTFer blogs--Web-easyphp

时间:2023-10-06 23:55:46浏览次数:46  
标签:返回 Web 2023x -- blogs json 数组 字符串 array

一、题目链接

https://adworld.xctf.org.cn/challenges/list

二、解法步骤:

本题打开后是一段php代码,首先进行代码审计:

 题目要求输入两个变量a和b(还有个c),都符合其对应条件即可拿到flag。

先来看变量a:

isset(a)是php中最常用来判断变量是否被设置以及非空 有值则返回true,否则返回false

intval(a)该函数会将输入的变为整型

intval() 转换字符串类型时,会判断字符串是否以数字开头

  • 如果以数字开头,就返回1个或多个连续的数字
  • 如果以字母开头,就返回0

1a2b3c———1

abc———0

此题中可以使用传入科学计数法来使值大于600000  并且长度小于等于3

a = 1e9

再来看变量b:
题目中需要使b的md5值的后六位等于 8b184b,这里我们可以写一个简单的python脚本来进行爆破(这里不展示了)

可以得出b=53724

现在我们已经完成了第一类判断

c:

json_decode 函数:对json格式的字符串进行解码

array(): 将其转化为数组类型

is_array(): 字面意思,判断是否是数组类型

is_numeric(): 判断输入是否可以转化为数字类型 对于数字加字符就不可以进行转换

后半部分是php弱类型比较

综合以上函数分析 输入2023a 即可进入下一层循环

array("m"=>"2023x")这是数组中只有m这一个元素的传参方式

下一层循环要求c【n】是一个数组且包含两个元素 且第一个元素是一个数组

array_search是在数组中查找字符串

下边的foreach其实就是在数组中进行遍历查找

也就是说在前一段中查找如果没有该字符串就返回no

在下一段循环中如果有该字符串就返回no,这看起来相互矛盾

但是arraysearch使用的是弱比较,因此我们可以使用0来进行绕过判断,元素2因此赋值为0

$c=array("m"=>"2023x","n"=>array(array(),0))

最后还需要对c进行json编码

c={"m":"2023x","n":[[],0]}

最后将得到的a,b,c使用get方式传入即可拿到flag!!!

You're right cyberpeace{233ee11925836ad185c691b9ad88bdf2}

 

标签:返回,Web,2023x,--,blogs,json,数组,字符串,array
From: https://www.cnblogs.com/heck1ng/p/17745324.html

相关文章

  • ElasticSearch8.10.2接入SpringBoot3.+
    pom.xml文件引入依赖 <!--https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-client--> <dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> &l......
  • 关系型数据库和非关系型数据库的区别
    关系型数据库(RelationalDatabase)和非关系型数据库(NoSQLDatabase)是两种不同的数据库管理系统。关系型数据库是基于关系模型的数据库,使用表格(表)来组织和存储数据。数据在表中以行和列的形式进行存储,每个表都有一个唯一的键(主键)来标识每一行数据。关系型数据库使用结构化查询语言(S......
  • CS50x-week7 SQL
    SQL是一种处理数据的编程语言先看看使用python是如何读入csv数据的importcsvwithopen("phonebool.csv","r")asfile:reader=csv.reader(file)forrowinreader:print(row[1])需要注意的是row[1]指的是每一行的第二个数据importcsvwithopen("p......
  • python进程之间共享数据
    python进程之间共享数据Value#Value是multiprocessing库提供的对象类​#示例:frommultiprocessingimportProcess,Value​​deftask(num:Value):  #提供锁解决同步问题  withnum.get_lock():    num.value+=1    print(f'process_num={num......
  • CSS
    CSS(CascadingStyleSheets)是一种用于描述HTML(或XML等)文档的样式和布局的标记语言。它通过为HTML元素应用样式规则来控制元素的外观和排版。CSS的主要作用是将网页的内容和样式分离,使得网页的结构和样式可以独立进行修改和管理。通过CSS,可以为HTML元素指定字体、颜色、背景、边框......
  • winform 进度报告
    在创建进度条时候,需要有订阅进度变化的action,可以使用net提供的progress解决这一问题Progress<T>对象是.NET中用于报告进度的通用类型。它允许在多线程环境下方便地传递进度信息并更新UI元素。Progress<T>是一个泛型类,其中的T表示进度报告的数据类型。通过创建Progress<T>对象,......
  • LLM实践-在Colab上使用免费T4 GPU进行Chinese-Llama-2-7b-4bit推理
    一、配置环境1、打开colab,创建一个空白notebook,在[修改运行时环境]中选择15GB显存的T4GPU.2、pip安装依赖python包!pipinstall--upgradeaccelerate!pipinstallbitsandbytestransformers_stream_generator!pipinstalltransformers!pipinstallsentencepiece!pip......
  • sysctl 命令介绍
    sysctl-configurekernelparametersatruntime在运行时配置内核参数。选项sysctl[-n][-e]variable...sysctl[-n][-e][-q]-wvariable=value...sysctl[-n][-e][-q]-p<filename>sysctl[-n][-e]-asysctl[-n][-e]-A描述sysctlisusedtomodifyke......
  • Servlet 以及它的生命周期
    Servlet是Java中用于处理Web请求和生成Web响应的服务器端组件。它是JavaServletAPI的一部分,通过继承javax.servlet.Servlet接口或javax.servlet.http.HttpServlet类来实现。Servlet的生命周期包括以下几个阶段:1.初始化(Initialization):在Servlet被实例化之后,会调用其init()方法......
  • 队列的API
    2023.10.61.poll,peek,element相同点:都是返回队列首个元素不同点:poll:将首个元素从队列中弹出,如果队列是空的,就返回nullpeek:查看首个元素,不会移除首个元素,如果队列是空的就返回nullelement:查看首个元素,不会移除首个元素,如果队列是空的就抛出异常NoSuchElementException ......