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()函数可以将数组中键名改为变量名,将键值作为变量值

​ 应用:

image-20250726144523314

?var [template] [tp1] = template.php&tp=tp1

​ parse_str()函数

​ parse_str()函数可以将字符串解析为变量

​ 应用:

26873ca8-a7fa-4b09-86e8-2a210c36ec71

​ ?id=a[0]=s878926199a

posted @ 2025-09-04 21:44  lieer  阅读(9)  评论(0)    收藏  举报