- 代碼/命令執行
比如說能夠對一個php的站點,控制php代碼,那麼我們就把它劃分爲代碼執行,如果能執行網站所在服務器中的命令,我們這就把它劃分爲命令執行,因爲它執行的是系統命令。
一般來說代碼或命令執行漏洞都存在一個相關函數,通過控制部分參數傳遞到函數中實現命令執行。說到CTF題型中的這種攻擊手段,一定要知道哪些函數能夠被利用需要我們去關注的,首先會帶大家瞭解一些代碼注入的相關函數,例如執行php代碼的一些函數。
- 相關函數(代碼注入)
1、eval 函數
這個函數能夠把字符串當成代碼來執行,以分號結尾可以理解爲是完整語句,即使報錯加上分號之後語句也會成功執行。
2、Assert
3、call_user_func
注意不是所有的函數都能去調用,官方手冊上也沒有明確哪些函數可以調用哪些不能。
4、call_user_func_array
5、create_function
6、preg_replace
這個函數比較早,5.5中它已經被棄用了,但是你一樣可以去使用它,但是在7.0之後,你就沒辦法去調用它,它已經不存在了。
7、array_map
8、Usort
9、{php代碼}
- 舉栗子
price是中間可控的,我們這裏就控制它。
我們傳的是123,實際上echo裏的語句是name的價格是123,分號後面是不存在的,實際傳遞值的時候,是不用去傳引號的,我們把引號去掉就能實現命令執行了。
以上內容參考安全牛課堂《CTF從入門到提升》