CTF從入門到提升(十六)程式碼執行相關函數及例題分享

  • 2019 年 10 月 4 日
  • 筆記

程式碼/命令執行

比如說能夠對一個php的站點,控制php程式碼,那麼我們就把它劃分為程式碼執行,如果能執行網站所在伺服器中的命令,我們這就把它劃分為命令執行,因為它執行的是系統命令。 

一般來說程式碼或命令執行漏洞都存在一個相關函數,通過控制部分參數傳遞到函數中實現命令執行。說到CTF題型中的這種攻擊手段,一定要知道哪些函數能夠被利用需要我們去關注的,首先會帶大家了解一些程式碼注入的相關函數,例如執行php程式碼的一些函數。

相關函數(程式碼注入)

1eval 函數

這個函數能夠把字元串當成程式碼來執行,以分號結尾可以理解為是完整語句,即使報錯加上分號之後語句也會成功執行。

2Assert 

3call_user_func 

注意不是所有的函數都能去調用,官方手冊上也沒有明確哪些函數可以調用哪些不能。  

4call_user_func_array 

5create_function

6preg_replace

這個函數比較早,5.5中它已經被棄用了,但是你一樣可以去使用它,但是在7.0之後,你就沒辦法去調用它,它已經不存在了。

7array_map 

8Usort

9{php程式碼} 

舉栗子 

price是中間可控的,我們這裡就控制它。

我們傳的是123,實際上echo里的語句是name的價格是123,分號後面是不存在的,實際傳遞值的時候,是不用去傳引號的,我們把引號去掉就能實現命令執行了。 

以上內容參考安全牛課堂《CTF從入門到提升