代码执行概念:
远程代码执行实际上就是调用服务器网站代码进行执行。
执行方法:
1.eval
eval():将字符串当做函数进行执行(需要传入一个完整的语句
2.assert
assert():判断是否为字符串,是则当成代码执行
3.call_user_func
call_user_func():回调函数,可以使用is_callable查看是否可以进行调用
4.call_user_fuc_array
call_user_fuc_array():回调函数,参数为数组
5.create_function
create_function():创建匿名函数
string create_function(string $args,string
c
o
d
e
)
/
/
a
r
g
s
−
》
a
r
g
u
m
e
n
t
参
数
a
r
g
s
是
要
创
建
的
函
数
的
参
数
,
c
o
d
e
是
函
数
内
的
代
码
6.
p
r
e
g
r
e
p
l
a
c
e
p
r
e
g
r
e
p
l
a
c
e
(
)
7.
a
r
r
a
y
m
a
p
a
r
r
a
y
m
a
p
(
)
:
为
数
组
的
每
个
元
素
应
用
回
调
函
数
8.
a
r
r
a
y
f
i
l
t
e
r
a
r
r
a
y
f
i
l
t
e
r
(
)
:
依
次
将
a
r
r
a
y
数
组
中
的
每
个
值
传
递
到
c
a
l
l
b
a
c
k
函
数
。
如
果
c
a
l
l
b
a
c
k
函
数
返
回
t
r
u
e
,
则
a
r
r
a
y
数
组
的
当
前
值
会
被
包
含
在
返
回
的
结
果
数
组
中
。
9.
u
s
o
r
t
u
s
o
r
t
(
)
:
使
用
自
定
义
函
数
对
数
组
进
行
排
序
10.
code) //args-》argument参数 args是要创建的函数的参数,code是函数内的代码 6.preg_replace preg_replace() 7.array_map array_map():为数组的每个元素应用回调函数 8.array_filter array_filter():依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含 在返回的结果数组中。 9.usort usort():使用自定义函数对数组进行排序 10.
code)//args−》argument参数args是要创建的函数的参数,code是函数内的代码6.pregreplacepregreplace()7.arraymaparraymap():为数组的每个元素应用回调函数8.arrayfilterarrayfilter():依次将array数组中的每个值传递到callback函数。如果callback函数返回true,则array数组的当前值会被包含在返回的结果数组中。9.usortusort():使用自定义函数对数组进行排序10.{}
${}:中间的php代码将会被解析
命令执行概念:
通过易受攻击的应用在主机上执行任意命令。
命令执行常见函数:
1.system
system:可以执行系统命令并将其输出
2.exec
exec:执行命令,但无输出,可以使用output进行输出
3.passthru
passthru:执行命令并输出
4.shell_exec
shell_exec:执行命令,但无回显
5.反引号
反引号:执行shell命令,并返回输出的字符串
6.ob_start
ob_start:打开输出控制缓冲
常见分隔符
• 换行符 %0a
• 回车符 %0d
• 连续指令 ;
• 后台进程 &
• 管道符 |
• 逻辑 || &&
2.绕过空格
• $IFS
• <
• ${IFS}
• $IFS
9
•
3.
各
类
符
号
•
•
•
4.
敏
感
字
符
绕
过
变
量
绕
过
a
=
l
,
b
=
s
;
9 • %09 3.各类符号 • %0d • %00 • %20 4.敏感字符绕过 变量绕过 a=l,b=s;
9•3.各类符号•••4.敏感字符绕过变量绕过a=l,b=s;a$b
base64编码绕过
echo ‘cat’ | base64
未定义的初始化变量
cat$b /etc/passwd
连接符
cat /etc/pass’w’d
使用通配符:
如:
/???/?s --help