PHP弱类型的学习

主线

https://www.cnblogs.com/Mrsm1th/p/6745532.html
https://www.freebuf.com/articles/web/129607.html
这两个博客很详细,下面为学习过程中第一个博客搜查的内容
建议看完第一个保留疑问然后再看第二个再做复习

下面为学习过程中搜查的内容:

1.$_GET 变量
2.ctype_alpha
3.md5()函数
4.json_decode函数
5.intval()函数
6.array_search函数
7.strcmp()漏洞

1.$_GET 变量

https://www.runoob.com/php/php-get.html
同时也证明了get参数是通过URL传递并且不太安全
我们可以通过在URL后添加:?内容来提交get参数

2.ctype_alpha

https://www.php.net/manual/zh/function.ctype-alpha.php
如果在字符串中,每个字符都是一个字母,那么就返回TRUE,反之则返回FALSE

3.md5()函数

https://www.w3school.com.cn/php/func_string_md5.asp
根据true跟flase调整加密方式(针对字符串)
可利用弱类型的特点进行绕过

4.json_decode函数

附加上key,value,=>和->的解释:
Array(0=>1,1=>2,2=>3,3=>4)
那么等号左边的就是数组的下标也叫索引也叫键(key),箭头指向的便是数组的值(value)。

->:https://blog.csdn.net/qq_38275944/article/details/75576963
->是成员访问符 =>是数组的赋值符号
(面向对象的引用)
json绕后需要学习js跟面向对象(超纲了!)

先抽象学习,不纠牛角尖

5.intval()函数

https://www.php.net/intval
用于base解码

6.array_search函数

https://www.w3school.com.cn/php/func_array_search.asp

7.strcmp()漏洞

https://blog.csdn.net/cherrie007/article/details/77473817
针对低版本的php

总结:

1.(1)= = = 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较

(2)== 在进行比较的时候,会先将字符串类型转化成相同,再比较

所以弱类型的利用需= =而不是===

2.字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0。

(1)字符串开头会被转化为0
eg:“admin”==0

(2)合法数值开头
eg:“1admin”==1

(3)可做运算
eg: $ test=1+“2admin”;//$test=3(int)

补充:MD5碰撞

1.md5弱比较:(= =)
md5弱比较,为0e开头的会被识别为科学记数法,
结果均为0
0e开头的md5和原值:

s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
240610708
0e462097431906509019562988736854
2120624
0e85776838554cc1775842c212686416

payload:

param1=s878926199a&param2=s155964671a

2.md5强比较:(= = =)
md5强比较,此时如果传入的两个参数不是字符串,而是数组,md5()函数无法解出其数值,而且不会报错,就会得到===强比较的值相等

payload

param1[]=1&param2[]=2

3.真实md5碰撞
待补充

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值