01-WEB-新手村
01-WEB-新手村
1.X-Forwarded-For:IP
为http扩展头部,表示http请求端真实IP,即可以修改请求端的ip地址,放在第二行
类似的还有:
X-Forwarded-For:127.0.0.1
X-Forwarded:127.0.0.1
Forwarded-For:127.0.0.1
Forwarded:127.0.0.1
X-Forwarded-Host:127.0.0.1
X-remote-IP:127.0.0.1
X-remote-addr:127.0.0.1
True-Client-IP:127.0.0.1
X-Client-IP:127.0.0.1
Client-IP:127.0.0.1
X-Real-IP:127.0.0.1
Ali-CDN-Real-IP:127.0.0.1
Cdn-Src-Ip:127.0.0.1
Cdn-Real-Ip:127.0.0.1
CF-Connecting-IP:127.0.0.1
X-Cluster-Client-IP:127.0.0.1
WL-Proxy-Client-IP:127.0.0.1
Proxy-Client-IP:127.0.0.1
Fastly-Client-Ip:127.0.0.1
True-Client-Ip:127.0.0.1
2.Referer:xxx.com
为http请求头一部分,表示此数据包的来源
3.User-Agent
用户代理,为一个特殊字符串头,是服务器能识别客户的操作系统、浏览器等
4. 弱类型
=== :先判断两数据类型是否相等,再比较
== :现将两数据转化为相同类型,再比较
当 数字和字符串比较 或 能转为数字的字符串 时,字符串会先转化为数值并按照数值来比较
如 : 0 == "admin" (true)
"123abc"会转化为123(int)
"1.23abc"会转化为1.23(float)
"-1.3e3"会转化为-1300(float)
在php5中,intval($a)仅仅逐位转数字,不看内容是否为二进制、科学技术法等,但是+号可以。在php7以后,intval()函数执行时就会看内容。
例题:
$num=$_GET['num'];
$numPositve=intval($num);
$numReverse=intval(strrev($num));
if($num!=$numPositve) ...
if($numPositve==$numReverse&&!isHuiWenShu ($num)) 成功....
对于第一个if判断,可以通过浮点数精度绕过,11.0000000000001(但是对于=强相等来说是false )
对于第二个if判断,可以将num设置为10.010,intval(010)还是10
5.MD5绕过
1> $a != $b md5($a) == md5($b)
利用弱相等,a、b为可以转换为数字的字符串,且格式为科学计数法,0的n次 幂。如‘0e7582397458423750943275’
2> $a != $b md5($a) === md5($b)
利用md5()函数只能转字符串,md5(arr[])=NULL,则让a、b均为数组即可
3> (string)$a !=(string)$b md5($a) === md5($b)
利用md5碰撞,两个不同的东西有相同的md5
常规的0e绕过
- QNKCDZO
- 240610708
- s878926199a
- s155964671a
- s214587387a
- s214587387a
- 两次md5和原来弱相等:0e1138100474
6.变量覆盖
extract()函数
extract()函数可以将数组中键名改为变量名,将键值作为变量值
应用:
?var [template] [tp1] = template.php&tp=tp1
parse_str()函数
parse_str()函数可以将字符串解析为变量
应用:
?id=a[0]=s878926199a
浙公网安备 33010602011771号