代码审计
PHP
$json=json_decode($_GET['json'],true);
$_GET['json']
从URL查询字符串中获取’json’参数的值。例如,如果URL是example.com?json={"key":"value"}
,$_GET['json']
将返回{"key":"value"}
。
include_once()
:在脚本执行期间包含并运行指定文件。该函数和include 函数类似,两者唯一的区别是 使用该函数的时候,php会加检查指定文件是否已经被包含过,如果是,则不会再被包含。
无字母数字绕过正则表达式总结(含上传临时文件、异或、或、取反、自增脚本)
|
$_SERVE[‘PHP_SELF’]
读取的是当前执行脚本的文件名,意思就是读取文件夹下的一个文件如,
如下即为执行脚本的文件:
www.errorr0.com/errorr1/errorr2/
------ /errorr1/errorr2/index.php
www.errorr0.com/errorr1/errorr2/index.php
-------- /errorr1/errorr2/index.php
www.errorr0.com/errorr1/errorr2/flag.php
--------- /errorr1/errorr2/flag.php
www.errorr0.com/errorr1/errorr2/index.php?key=value
-------- index.php
$_SERVER['REQUEST_URI']
是取得当前URL的 路径地址
/show_source/用show[source
或者show.source
绕过
basename()
返回路径中的文件名部分
highlight_file可以起到文件读取的作用
eg: |
intval() 是 PHP 中的一个函数,它用来获取变量的整数值。这个函数将会返回变量的整数表示,如果该变量不能转换为整数,那么返回 0。
变量拼接
?ip=127.0.0.1;a=ag;b=fl;cat$IFS$9$b$a.php
base64编码
;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
ctype_alpha
是一个检测函数,用来检测所给参数是不是字母的函数。is_numeric
— 检测变量是否为数字或数字字符串。md5()
函数
伪随机数
mt_scrand()
//播种 Mersenne Twister
随机数生成器。
mt_rand()
//生成随机数
|
得到结果
895547922###2141438069###1546885062###
895547922###2141438069###
原因:在/ext/standard/rand.c
中可以看到,播完种后,将会将 mt_rand_is_seeded 的值设置为1,因此mt_rand只播种一次
使用:
┌──(sein㉿kali)-[~/php_mt_seed-4.0] |
弱类型比较
布尔类型True与非零非NULL变量比较都会是True
其中用到了md5($pass,true)
第二个参数true会将md5值用原始的6字符输出,
在网上搜索后发现这个可以用ffifdyop
绕过,绕过原理是:ffifdyop
这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c
,这个字符串前几位刚好是’ or ‘6,而 heMysql
刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from ‘admin’ where password=’’ or ‘6xxxxx’
,等价于 or 一个永真式,因此相当于万能密码,可以绕过md5($pass,true)
函数
in_array()
函数搜索数组中是否存在指定的值。
in_array(search, array, type)
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置
mb_strpos (haystack ,needle ) |
mb_substr() //函数返回字符串的一部分。 |