一、环境
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 包含服务器信息和请求头的数组表单数据
$_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函数//#5-array_map //post:func=phpinfo
3.2 命令执行
php有一系列系统命令执行的函数
可参考1. system
system — 执行外部程序,并且显示输出//post:cmd=whoami
2 passthru
passthru — 执行外部程序并且显示原始输出
//post:cmd=ifconfig
3.exec
返回命令输出的最后一行
4 pcntl-exec
5. shell_exec
6 popen proc_popen
7 ``
8 ob_start/ob_end_flush
//?a=whoami