博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php webshell学习
阅读量:2061 次
发布时间:2019-04-29

本文共 2173 字,大约阅读时间需要 7 分钟。

一、环境

kali 192.168.43.177

开户apache /etc/init.d/apache2 start
/var/www/html/目录下编辑php代码
hackbar

二、php基础

输出函数:

echo - 可以输出一个或多个字符串
print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
var_dump 用于输出变量的相关信息,包括变量类型,值
print_r 函数用于打印变量,以更容易理解的形式展示。

EOF

我的第一个标题

我的第一个段落。

EOF;// 结束需要独立一行且前后不能空格?>

php字符串

PHP 超级全局变量

$GLOBALS 用于访问全局变量数组

$_SERVER 包含服务器信息和请求头的数组

image.png

表单数据

$_REQUEST
$_POST
$_GET

$_FILES

$_FILES 是一个预定义的数组,用来获取通过 POST 方法上传文件的相关信息。如果为单个文件上传,那么 $_FILES 为二维数组;如果为多个文件上传,那么 $_FILES 为三维数组

$_ENV

PHP中的$_ENV是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它。

$_COOKIE

数组 用于取回cookie的值

$_SESSION

数组,用于取回会话变量

三、webshell常用函数

3.1代码执行

1. eval

eval () 函数把字符串按照 PHP 代码来执行

该字符串必须是合法的 PHP 代码,且必须以分号结尾
如果没有在代码字符串中调用 return 语句,则返回 NULL
如果代码中存在解析错误,则 eval () 函数返回 false

可参考

注意:

加上 @符来抑制错误输出

eval函数参数中的赋值操作需要对$转义 \$

//#1-eval
//post:cmd=phpinfo();
//get:?cmd=phpinfo();

2. assert

assert为php中的断言函数,用法同eval

assert_option()可以用来对assert()进行一些约束和控制;
默认值

ASSERT_ACTIVE=1 //Assert函数的开关ASSERT_WARNING =1 //当表达式为false时,是否要输出警告性的错误提示,issue a PHP warning for each failed assertionASSERT_BAIL= 0 //是否要中止运行;terminate execution on failed assertionsASSERT_QUIET_EVAL= 0 //是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluationASSERT_CALLBACK= (NULL) // 是否启动回调函数 user function to call on failed assertions
例子//#2-assert
//post:cmd=phpinfo();

3. call_user_func

call_user_func把第一个参数作为回调函数调用,

其余参数是回调函数的参数。
返回回调函数的返回值。

//#3-call_user_func
//post:fun=assert¶=phpinfo();

4. create_funtion

create_function用于创建一个匿名函数,像python中lambda表达式

create_function ( string $args , string $code ) : string

args 为函数参数 如$a,$b
code 函数的代码
返回一个字符串,表示 函数名

//#4-create_function
//post:func=phpinfo();

5 array_map

array_map — 为数组的每个元素应用回调函数,相当于python中的map函数

image.png
//#5-array_map
//post:func=phpinfo

3.2 命令执行

php有一系列系统命令执行的函数

可参考

系统程序执行

1. system

system — 执行外部程序,并且显示输出

system函数
//post:cmd=whoami

2 passthru

passthru — 执行外部程序并且显示原始输出

passthru
//post:cmd=ifconfig

3.exec

返回命令输出的最后一行

image.png

4 pcntl-exec

pcntl-exec

5. shell_exec

shell_exec

6 popen proc_popen

popen

7 ``

8 ob_start/ob_end_flush

//?a=whoami

参考资料

转载地址:http://hrqlf.baihongyu.com/

你可能感兴趣的文章
深入 kubernetes API 的源码实现
查看>>
真香!使用 Goland 网页版实现真正的云开发
查看>>
又超时了!Etcd分布式锁你用明白了吗?
查看>>
工程师应该怎么学习
查看>>
记一次 Kubernetes 机器内核问题排查
查看>>
记一次 Kubernetes 中严重的安全问题
查看>>
在业务系统中寻找技术含量
查看>>
拥抱云原生,基于 eBPF 技术实现 Serverless 节点访问 K8S Service
查看>>
有了 Docker 就不用再深入学习 MySQL 了?
查看>>
持续监控集群中的镜像漏洞
查看>>
终于可以像使用 Docker 一样丝滑地使用 Containerd 了!
查看>>
张磊大神的《深入剖析Kubernetes》终于出书啦!
查看>>
KubeSphere 团队(青云QingCloud) 全职开源职位等你加入!
查看>>
真棒!3 种方法限制 Pod 磁盘容量,瞬间豁然开朗
查看>>
高并发、高可用、高可靠微服务架构7大顶级设计思维模型
查看>>
如何使用 registry 存储的特性
查看>>
凉了,stress 无论如何也无法打满 CPU
查看>>
除了 k8s,留给 k 和 s 中间的数字不多了!
查看>>
使用 wrk 压测并精细控制并发请求量
查看>>
Ceph 故障排查笔记 | 万字经验总结
查看>>