ctf php侧漏,ctf中常见的PHP漏洞小结

ctf中常见的PHP漏洞小结

在做ctf题的时候经常会遇到一些PHP代码审计的题目,这里将我遇到过的常见漏洞做一个小结。

md5()漏洞

PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。

常见的payload有

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

s214587387a

sha1(str)

sha1('aaroZmOk')

sha1('aaK1STfY')

sha1('aaO8zKZF')

sha1('aa3OFF9m')

同时MD5不能处理数组,若有以下判断则可用数组绕过

if(@md5($_GET['a']) == @md5($_GET['b']))

{

echo "yes";

}

//http://127.0.0.1/1.php?a[]=1&b[]=2

判断代码:

if($v1 != $v2 && md5($v1) == md5($v2))//D0g3某道题

strcmp()漏洞

int strcmp(string $str1, string $str2)

参数 str1第一个字符串。str2第二个字符串。如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

当这个函数接受到了不符合的类型,这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return 0 !!!! 也就是虽然报了错,但却判定其相等了。这对于使用这个函数来做选择语句中的判断的代码来说简直是一个致命的漏洞,当然,php官方在后面的版本中修复了这个漏洞,使得报错的时候函数不返回任何值。

$password=$_GET['password'];

if (strcmp('*****',$password)) {

echo 'NO!';

} else{

echo 'YES!';

}

?>

对于这段代码,我们能用什么办法绕过验证呢, 只要我们\$_POST[‘password’]是一个数组或者一个object即可,但是上一个问题的时候说到过,只能上传字符串类型,那我们又该如何做呢。

其实php为了可以上传一个数组,会把结尾带一对中括号的变量,例如 xxx[]的name(就是$_POST中的key),当作一个名字为xxx的数组构造类似如下的request

POST /login HTTP/1.1

Host: xxx.com

Content-Length: 41

Accept: application/json, text/javascript

User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.8

Connection: close

password[]=admin

文件包含漏洞

include()

require()

include_once()

require_once()

这四个函数会将包含的文件作为php文件解析

_once表示同名文件只引入一次,include在引入不存文件时产生一个警告且脚本还会继续执行,require则会导致一个致命性错误且脚本停止执行。

include()是有条件包含函数,而 requir

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值