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

  • 代碼/命令執行

比如說能夠對一個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從入門到提升

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章