php积累

it2025-08-06  6

 

1、PHP弱类型比较

题目simple_php

<?php show_source(__FILE__); include("config.php"); $a=@$_GET['a']; $b=@$_GET['b']; if($a==0 and $a){ echo $flag1; } if(is_numeric($b)){ exit(); } if($b>1234){ echo $flag2; } ?>

php 弱类型总结

php中其中两种比较符号: ==:先将字符串类型转化成相同,再比较 ===:先判断两种字符串的类型是否相等,再比较 字符串和数字比较使用==时,字符串会先转换为数字类型再比较 var_dump('a' == 0);//true,此时a字符串类型转化成数字,因为a字符串开头中没有找到数字,所以转换为0 var_dump('123a' == 123);//true,这里'123a'会被转换为123 var_dump('a123' == 123);//false,因为php中有这样一个规定:字符串的开始部分决定了它的值,如果该字符串以合法的数字开始,则使用该数字至和它连续的最后一个数字结束,否则其比较时整体值为0。 举例: var_dump('123a1' == 123);//true var_dump('1233a' == 123);//false

2、序列化和反序列化

题目Web_php_unserialize

深度剖析PHP序列化和反序列化

String : s:size:value; Integer : i:value; Boolean : b:value;(保存1或0) Null : N; Array : a:size:{key definition;value definition;(repeated per element)} Object : O:strlen(object name):object name:object size:{s:strlen(property name):property name:property definition;(repeated per property)}

php反序列化漏洞绕过魔术方法 __wakeup

unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。 当成员属性数目大于实际数目时可绕过wakeup方法(CVE-2016-7124)

正则绕过

/[oc]:\d+:/i [oc]O或者C \d表示数字 +:匹配前面的子表达式一次或多次(大于等于1次) /i不区分大小写 [oc]:\d可以用 O:+4绕过 因为0+4还是4

3、题目Web_php_include

题解

深入剖析PHP输入流 php://input

php data:// 协议

4、phps的利用(phps文件就是php的源代码文件)

题目:PHP2

tips:hackbar execution的时候会自动进行一次url编码,所以如果用hackbar而不是在浏览器框输入,只用编码一次即可

 

最新回复(0)