XCTF1-web php

场景一:simple_php

题目描述

小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
在这里插入图片描述

进入场景
  1. 给了php代码,分析一下
    在这里插入图片描述
    GET传入两个参数a,b
    a = @ a=@ a=@_GET[“a”];其中的@是为了防止没有$_GET[‘a’]出现错误提示
    $a==0 and a : a 等 于 0 , 且 a 是 T R U E 。 p h p 是 弱 语 言 , 在 执 行 关 系 运 算 “ = = ” 时 要 求 运 算 符 两 边 的 数 据 类 型 必 须 一 致 , 如 果 等 号 左 边 是 字 符 串 , 会 被 强 制 转 换 为 整 型 0 , 但 字 符 串 是 T R U E 。 i s n u m e r i c ( a :a等于0,且a是TRUE。php是弱语言,在执行关系运算“==”时要求运算符两边的数据类型必须一致,如果等号左边是字符串,会被强制转换为整型0,但字符串是TRUE。 is_numeric( aa0,aTRUEphp==,0TRUEisnumeric(b) :is_numeric() 函数用于检测变量是否为数字或数字字符串。如果指定的变量是数字和数字字符串则返回TRUE,否则返回FALSE。

接收参数 a 存 在 , 并 且 a存在,并且 aa==0可用.绕过(非数字都可绕过)

在这里插入图片描述
flag1获取,需要a为0 且为true
flag2获取,需要b不是数字或数字字符串,且值大于1234

参考链接:https://blog.51cto.com/u_15300891/3060354

场景二:easyphp

进入场景

在这里插入图片描述

  1. 很长一串,定位flag,发现要使key1和key2为true。
    往前看,key1要为1,需要变量a整数数值大于6百万,同时字符串长度小于等于3;变量b要md5加密后,后6位为8b184b
Intval()函数获取变量整数数值:
	Intval最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -21474836482147483647。举例,在这样的系统上, intval(1000000000000) 会返回 214748364764 位系统上,最大带符号的 integer 值是 9223372036854775807。
	这个有个应用就是在判断数值是不是回文上,如果参数为2147483647,那么当它反过来,由于超出了限制,所以依然等于2147483647。即为回文。
  1. 变量a可以使用科学计数法来绕过,1e3=100
    官网:https://www.php.net/manual/zh/function.intval.php
    在这里插入图片描述
  2. 变量b可以爆破出对应的明文
    在这里插入图片描述
    在这里插入图片描述
    变量b对应的结果是53724。

输入a,b变量值测试,回显no,说明变量a,b成功绕过,还剩变量c的绕过。
在这里插入图片描述

  1. 变量c是一个数组类型
    在这里插入图片描述
    使用json_decode()函数对变量c进行编码,返回数组类型。
    c数组中存在m,n两个键名,m的键值不能是数字且大于2022。
    在这里插入图片描述

n的键值是一个数组且长度为2的二维数组,随便输入一个二维数组给n键
在这里插入图片描述
5. 变量d
在这里插入图片描述
array_search() 函数在数组中搜索某个键值,并返回对应的键名。
三个等号也是等于的意思,与==相比的话,识别数字和字符类型。
foreach 循环用于遍历数组。foreach ($array as $key => $value){}每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。

在这里插入图片描述

参考链接:https://blog.csdn.net/m0_56107268/article/details/127830960

PHP2

  1. 进入场景,什么都没有
    在这里插入图片描述
    御剑扫一下,只有一个index.php文件
    在这里插入图片描述
    直接访问index.php还是什么都没有
  2. 将php改为phps,尝试查看php源码
    在这里插入图片描述
    GET方式获取参数id,对id进行url解码后判断是否为admin
    要绕过,尝试对admin进行url加密
    在这里插入图片描述
    对admin进行二次加密
    在这里插入图片描述
    复制到url去访问
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值