当前位置:首页 > 黑客技术 > 正文内容

PHP弱类型安全问题总结

访客4年前 (2021-04-16)黑客技术1032

 前段时间做了南京邮电大学网络攻防渠道上面的标题,写了一个writeup之后,还有必要总结一下。因为做的标题都是web类型的,一切的标题都是运用PHP来写的,所以许多标题并没有调查到传统的如SQL注入,XSS的类型的缝隙,许多都是PHP自身语法的问题。鉴于现在PHP是世界上最好的言语,PHP自身的问题也能够算作是web安全的一个方面。在PHP中的特性便是弱类型,以及内置函数关于传入参数的松懈处理。本篇文章首要便是记载我在做攻防渠道上面遇到的PHP的函数中存在的问题,以及PHP的弱类型所带来的问题。

PHP弱类型简介

在PHP中,能够进行一下的操作。

1
2
3
$param = 1;
$param = array();
$param = "stringg";

弱类型的言语对变量的数据类型没有约束,你能够在任何地时分将变量赋值给恣意的其他类型的变量,一起变量也能够转化成恣意地其他类型的数据。

类型转化问题

类型转化是无法防止的问题。例如需要将GET或者是POST的参数转化为int类型,或者是两个变量不匹配的时分,PHP会自动地进行变量转化。可是PHP是一个弱类型的言语,导致在进行类型转化的时分会存在许多意想不到的问题。

比较操作符

类型转化

在$a==$b的比较中

1
2
$a=null;$b=flase ; //true
$a='';$b=null; //true

这样的比如还有许多,这种比较都是持平。
运用比较操作符的时分也存在类型转化的问题,如下:

1
2
3
4
0=='0' //true
0 == 'abcdefg' //true
0 === 'abcdefg' //false
1 == '1abcdef' //true

当不同类型的变量进行比较的时分就会存在变量转化的问题,在转化之后就有可能会存在问题。

Hash比较

除了以上的这种方法之外在进行hash比较的时分也会存在问题。如下:

1
2
3
"0e132456789"=="0e7124511451155" //true
"0e123456abc"=="0e1dddada" //false
"0e1abc"=="0" //true

在进行比较运算时,假如遇到了0ed+这种字符串,就会将这种字符串解析为科学计数法。所以上面比如中2个数的值都是0因而就持平了。假如不满足0ed+这种形式就不会持平。这个标题在攻防渠道中的md5 collision就有考到。

十六进制转化

还存在一种十六进制余字符串进行比较运算时的问题。比如如下:

1
2
3
"0x1e240"=="123456" //true
"0x1e240"==123456 //true
"0x1e240"=="1e240" //false

当其间的一个字符串是0x最初的时分,PHP会将此字符串解析成为十进制然后再进行比较,0x1240解析成为十进制便是123456,所以与int类型和string类型的123456比较都是持平。攻防渠道中的起名字真难便是调查的这个特性。

类型转化

常见的转化首要便是int转化为string,string转化为int。
int转string:

1
2
3
$var = 5;
方法1:$item = (string)$var;
方法2:$item = strval($var);

string转int:intval()函数。
关于这个函数,能够先看2个比如。

1
2
3
var_dump(intval('2')) //2
var_dump(intval('3abcd')) //3
var_dump(intval('abcd')) //0

阐明intval()转化的时分,会将从字符串的开端进行转化知道遇到一个非数字的字符。即便呈现无法转化的字符串,intval()不会报错而是回来0。
intval()的这种特性在攻防渠道中的MYSQL这道标题中就有考到。
一起,程序员在编程的时分也不应该运用如下的这段代码:

1
2
3
if(intval($a)>1000) {
mysql_query("select * from news where id=".$a)
}

这个时分$a的值有可能是1002 union…..

内置函数的参数的松懈性

内置函数的松懈性说的是,调用函数时给函数传递函数无法承受的参数类型。解说起来有点拗口,仍是直接经过实践的比如来阐明问题,下面会要点介绍几个这种函数。

[1] [2]  黑客接单网

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:http://therlest.com/106211.html

分享给朋友:

“PHP弱类型安全问题总结” 的相关文章

天猫双十一购物津贴使用规则

每年的双十一玩法都有更新,玩法是越来越多,但仍保留了一些经典玩法,比如购物津贴。那么购物津贴是什么意思呢?天猫双十一购物津贴使用规则是什么?双十一购物津贴可以与哪些优惠叠加?双11购物津贴面值多少元?一起来了解一下吧!    ...

华流年京东618怎么买便宜

京东618活动已经在火热进行中的哦,各位有买什么东西了吗?很多小伙伴在活动一开始的时候就迫不及待的买了很多东西了,还有些小伙伴还很犹豫不知道买啥,接下来百思特小编就来教教大家2020年京东618怎么便宜吧~ 京东618怎么买便宜 活动时...

Webshell安全检测篇

0x00 依据流量的检测办法 1.概述 笔者一直在重视webshell的安全剖析,最近就这段时刻的心得体会和咱们做个共享。 webshell一般有三种检测办法: 依据流量方法 依据agent方法(本质是直接剖析webshell文件) 依据日志剖析方法 Webshell的分...

威海海景房房价走势 - 山东威海海景房骗局

我是在乳山银滩买房的,多谢啦!可能是真实情况。 晚上夕阳衬着大海格外美丽,石岛房子要比银滩强的多。骗局倒是谈不上,是一个新兴的旅游区的新城,一般购房者以外地居民多,估计也是房子价格的一部分吧,那收入会更高,我家刚在D区买了房子,环境以及二十多公里的原生态沙滩形成。 但都在下面县级市的镇的郊区.听老妈...

如何寻找黑客微信号(只有一个微信号,黑客可以查到对方吗)

一、如何寻找黑客微信号(只有一个微信号,黑客可以查到对方吗) 1、有黑客能查到微信聊天记录是骗人的吗绝对是骗子,请勿相信! 微信聊天信息保存在本地 一般聊天信息都是保存在本地的,除非开通会员可以将聊天信息存储。 黑客查找出来的微信聊天截图是真的吗在手机端启动微信,在微信主界面底部导航中点击“微信”...

Qq邮箱被黑客攻击怎么办,网络游戏提款难找黑客,电脑被黑客入侵修改开机密码

self.python_version = int(str(entry.name)[6:8])在曩昔的几年里,当局现已开端在冲击暗网中的网络违法活动了,其间包含优待儿童、违禁药品买卖、兵器出售、数据出售、勒索软件和黑客论坛等等。 近年来,大型网络违法商场逐步式微,尤其是在欧洲和美国当局在上一年打掉了...

评论列表

性许比忠
3年前 (2022-06-19)

$var = 5;方法1:$item = (string)$var;方法2:$item = strval($var);string转int:intval()函数。关于这个函数,能够先看2个比如。123

囤梦做啡
3年前 (2022-06-19)

,0x1240解析成为十进制便是123456,所以与int类型和string类型的123456比较都是持平。攻防渠道中的起名字真难便是调查的这个特性。类型转化常见的转化首要便是int转化为string,string转化为int。int转string:123

泪灼云胡
3年前 (2022-06-19)

bcdefg' //true0 === 'abcdefg' //false1 == '1abcdef' //true当不同类型的变量进行比较的时分就会存在变量转化的问题,在转化之后就有可能会存在问题。Hash比较除了以上的这种方法之外在进行hash比较的时分也会存在问题。如下:123

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。