PHP代码审计-PHP特性

PHP代码审计-PHP特性的相关题目

intval1

image-20260601101458900

image-20260601101527694

通关get传入num,num不能是字符串4476,但是把num转换为整数后必须等于4476

image-20260601101838007

?num=0x117c                //hex
?num=010574                //oct
?num=0b0001000101111100    //bin
?num=+4476                 //正号
?num=4476.0                //float

任选其一即可get flag

image-20260601102023764

image-20260601102701803

intval2

image-20260601103006811

image-20260601103042977

相比上一题,这一题增加了正则替换和字符寻址

strops从$num中寻找0,如果没有->false,如果在第0位返回0=false,然后前面有逻辑非,就会成真

所以构造的payload要有0,并且不能在开头

?num=4476.0

image-20260601104124140

initval3

image-20260601105243035

image-20260601105406521

这一关对数字进行了正则替换,$num不能存在0-9的数字,判断如果 \$num能成功转换成数字,输出flag

?num[]=

给数组任意赋值为非空数组

image-20260601110121971

image-20260601110436870

in_array

image-20260601173413998

in_array()是判断是否在数组中,in_array(要查找的值, 数组, [是否开启严格模式]);

image-20260601174237569

首先判断是否传入pass,传入pass后对比是否在$list中,如果不在,加上前面的逻辑非,返回真值,输出flag

?pass=

image-20260601173948247

image-20260601174444992

in_array2(strmcp)

image-20260601201657596

image-20260601201726215

strmcp是比较两个字符串是否一样的函数,如果一样返回0,>0就是字符串1>字符串2,如果传入数组,返回null,在若比较时,null==0

?pass[]=

image-20260601202239486

image-20260601202311043

md5比较

image-20260601203202409

image-20260601203223572

比较$name和\$pass的MD5必须一样,但是\$name和\$pass不能完全一样

数组绕过

?name[]=1&&pass[]=2

image-20260601203450019

image-20260601203513981

弱比较可以使用0e绕过,

原理:以 0e 开头、后面全是数字的字符串,会被解析成科学计数法

0e数字 等价于 0 × 10^数字,结果 = 0

QNKCDZO
240610708
s878926807
s155964296
s214587387
s214587387
s679824192
s849722504
文章评论