PHP代碼審計前期準備

1 php代碼審計的意義

1.1 什么是代碼審計

就是獲取目標的代碼,這個目標可以是一個網站,也可以是一個手機app

1.2 黑盒測試與白盒測試的區別

在代碼審計中黑盒和白盒的主要區別就在于是否可以拿到源代碼,黑盒是拿不到源代碼的,白盒是可以拿到的

1.3 是否應該學習代碼審計

測試流程必不可少的一部分 突破滲透測試的瓶頸 參與眾測,贏取高額獎金

1.4 代碼審計,需要學到什么程度

不需要像安全研究人員一樣,挖掘到一些0day,才說明大家學會代碼審計

2 PHP代碼審計入門必備知識

2.1 代碼審計需要使用那些軟件

Seay源代碼審計系統 快速函數定位 自定義多窗口搜索 MySQL執行監控 一鍵調試選中代碼 文檔自動查詢 自動審計

2.2 PHP代碼審計流程

2.2.1 通讀全文法

通讀全文法作為最麻煩的方法也是最全面的審計方法,特別是大型的項目,通讀全文也是了解整個項目,了解業務邏輯最好方法,了解整個項目,這樣也可以挖掘到更多的中高危漏洞

2.2.2 敏感函數參數回溯法

這個方法是最有效的,最常用的方法,大多數漏洞的產生是因為函數的使用不當導致的,我們可以全局搜索一些敏感函數,看看是否有未經過濾的參數傳進來,就可以挖掘漏洞,這里我們也可以使用Seay源代碼審計系統

2.2.3 定向功能分析法

這個方法主要是根據程序的業務邏輯來進行代碼審計的 查看網站的功能,大概推測可能存在那些漏洞

常見的功能漏洞 程序初始安裝 文件上傳 數據庫備份 找回密碼 驗證碼

2.3 PHP服務架構

CLI(在命令行中運行) PHP Built-in Webserver Apache php_mod Swoole

2.4 PHP安全配置

magic_quotes_gpc:5.3后廢棄,5.4后移除 register_global:4.2后默認為false allow_url_include:默認false allow_url_fopen:默認false request_order:5.3后從GPC改為GP short_open_tag:5.4以后,無論是否開啟,<?=..?>總是可以被執行 open_basedir:限制PHP可以訪問到那些目錄,哪些目錄不能訪問 disable_functions/disable_classes:限制PHP不能執行那些函數或者類 enable_dll:是否允許加載PHP擴展

3 PHP危險函數歸納

3.1 函數歸納

include/require/include_once/require_once eval/assert/preg_replace/create_function system/passthru/exec/shell_exec file_get_contents/fread/readfile/file/show_source file_put_contents/fwrite/mkdir unlink/rmdir move_uploaded_file/copy/rename extract/parse_str simplexml_load_files/simplexal_load_string unserialize urldecode/base64_decode

3.2 代碼執行函數

eval 把字符串作為PHP代碼執行,很多常見的webshell都是用eval來執行具體操作的 assert 也是把字符串作為PHP代碼執行 preg_replace 是正則表達式函數

3.3 包含函數

文件包含函數主要作用為包含并運行指定文件 include $file,如果$file可控的情況下,我們就可以包含任意文件了,從而達到getshell的目的 包含函數也能夠讀取任意文件內容,這就需要用到支持的協議和封裝協議和過濾器

3.4命令執行函數

exec() 執行一個外部程序 system() 執行外部程序,并且顯示輸出 只要命令就能執行的參數可控系統命令

3.5 文件操作函數

copy:拷貝文件 file_get_contents:將整個文件讀入一個字符串 file_put_contents:將一個字符串寫入文件 unlink:刪除文件 rmdir:刪除目錄

3.6 一些有漏洞的應用練習

XZ.Aliyun.com Github.com Wooyun鏡像站點漏洞

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14925.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14925.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

交叉編譯——

什么是交叉編譯 交叉編譯 是在一個平臺上生成臨海一個平臺可執行代碼. eg.在windows上面編寫C51代碼&#xff0c;并編譯生成可執行代碼。如xx.hex 我們在Ubuntu上編寫樹莓派的代碼&#xff0c;并編譯成可執行代碼。a.out. 是在樹莓派上運行&#xff0c;不在Ubuntu Linux上面運…

便攜式iv測試儀特點

TH-PV30便攜式IV測試儀是一種用于測量半導體器件電學特性的設備&#xff0c;它具有體積小、重量輕、便于攜帶等特點&#xff0c;廣泛應用于半導體行業、科研實驗室以及教育領域。 該測試儀的工作原理基于四探針法&#xff0c;通過在半導體器件表面放置四個金屬探針&#xff0c…

【vs2022】安裝copilot和reshaper

直接安裝新版vs 17.10 自帶集成的copilot支持安裝resharper 可以跳過市場里的reshper安裝好后依然可以直接使用vs。 resharper 2024.1.2 市場里還是i老版本&#xff1a; copilot 不兼容,這個是之前市場安裝的版本 官方建議用vs intall 安裝 安裝 GitHub Copilot GitHub.Co…

詳解http協議

什么是HTTP協議 定義 Http協議即超文本傳送協議 (HTTP-Hypertext transfer protocol) 。 它定義了瀏覽器&#xff08;即萬維網客戶進程&#xff09;怎樣向萬維網服務器請求萬維網文檔&#xff0c;以及服務器怎樣把文檔傳送給瀏覽器。從層次的角度看&#xff0c;HTTP是面向&am…

第四十一天 | 62.不同路徑 63.不同路徑|| 343.整數拆分 96.不同的二叉搜索樹

題目&#xff1a;62.不同路徑 1.二維dp數組dp[i][j]含義&#xff1a;到達&#xff08;i&#xff0c;j&#xff09;位置有dp[i][j]種方法。 2.動態轉移方程&#xff1a;dp[i][j] dp[i - 1][j] dp[i][j - 1] 3.初始化&#xff1a;dp[0][j] 1, dp[i][0] 1 &#xff08;第一…

Vue3設置緩存:storage.ts

在vue文件使用&#xff1a; import { Local,Session } from //utils/storage; // Local if (!Local.get(字段名)) Local.set(字段名, 字段的值);// Session Session.getToken()storage.ts文件&#xff1a; import Cookies from js-cookie;/*** window.localStorage 瀏覽器永…

uniapp 安卓 Pc端真機瀏覽器調試

下載插件:真機模擬瀏覽器 1. 安裝, 每次啟用時使用usb 線連接電腦, 并且打開手機或者POS (調試設備)開發者模式, 比如我的是pos 機 則在系統設置中找到版本號,點擊多次就會觸發開發者模式 2.打開真機模擬軟件,打開后會打開一個瀏覽器,如果想要模擬google的瀏覽器則 在瀏覽器地…

精準鍵位提示,鍵盤盲打輕松入門

在說明精準鍵位提示之前&#xff0c;我們先來看一張圖&#xff1a; 這是一張標準的基準鍵位圖&#xff0c;也就是打字時我們雙手的8個手指放在基準鍵位上&#xff0c;在打不同的字母時&#xff0c;我們的手指以基準鍵位為中心&#xff0c;或上、或下、或左、或右&#xff0c;在…

202109青少年軟件編程(Python)等級考試試卷(四級)

第 1 題 【單選題】 執行如下 Python 代碼后, 結果是?( ) def inverse(s,n=0): while s:n = n * 10 + s % 10s = s // 10return nprint

《拯救大學生課設不掛科第二期之Windows11下安裝VC6.0(VC++6.0)與跑通Hello,World!程序教程》【官方筆記】

背景與目標人群&#xff1a; 大學第一次學C語言的時候&#xff0c;大部分老師會選擇VC6這個編輯器。 但由于很多人是新手&#xff0c;第一次上大學學C語言。 老師要求VC6.0&#xff08;VC6.0&#xff09;寫C語言跑程序可能很多人還是第一次接觸電腦。 需要安裝VC6這個編輯器…

Docker常用軟件安裝

文章目錄 1.安裝Tomcat1.docker hub查找鏡像并復制拉取鏡像命令2.拉取鏡像到本地1.執行官網命令2.查看是否拉取成功 3.啟動tomcat4.退出和重啟1.由于是以交互方式啟動的&#xff0c;所以不方便&#xff0c;直接ctrl c退出2.查看當前的容器3.使用docker start 命令啟動容器&…

【cocos creator 】生成六邊形地圖

想要生成一個六邊形組成的地圖 完整代碼示例 以下是完整的代碼示例&#xff0c;包含了注釋來解釋每一步&#xff1a; cc.Class({extends: cc.Component,properties: {hexPrefab: {default: null,type: cc.Prefab},mapWidth: 10, // 網格的寬度&#xff08;六邊形的數量&am…

前端React老項目打包caniuse-lite報錯解決思路

1、下載項目&#xff0c;先更新.npmrc文件&#xff1a; registryhttp://registry.npmmirror.com 2、安裝依賴&#xff0c;本地啟動&#xff0c;運行正常&#xff0c;但直接提交代碼線上打包時會報錯&#xff1a; “ 未找到相關的合并請求。” 打開日志頁面&#xff0c;報錯信息…

【Flutter】線性布局彈性布局層疊布局

&#x1f525; 本文由 程序喵正在路上 原創&#xff0c;CSDN首發&#xff01; &#x1f496; 系列專欄&#xff1a;Flutter學習 &#x1f320; 首發時間&#xff1a;2024年5月25日 &#x1f98b; 歡迎關注&#x1f5b1;點贊&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…

4、PHP的xml注入漏洞(xxe)

青少年ctf&#xff1a;PHP的XXE 1、打開網頁是一個PHP版本頁面 2、CTRLf搜索xml&#xff0c;發現2.8.0版本&#xff0c;含有xml漏洞 3、bp抓包 4、使用代碼出發bug GET /simplexml_load_string.php HTTP/1.1 補充&#xff1a; <?xml version"1.0" encoding&quo…

內網穿透--Nps-自定義-上線

免責聲明:本文僅做技術交流與學習... 目錄 Nps項目: 一圖通解: 1-下載nps/npc 2-服務端啟動 訪問web網頁: 添加客戶端&#xff0c;生成密匙. 3-kali客戶端連接服務端 4-添加協議隧道. 5-kali生成后門&#xff1a; 6-kali創建監聽: Nps項目: https://github.com/ehang…

藍橋杯Web開發【模擬題一】15屆

1.動態的Tab欄 日常在使用移動端 APP 或訪問 PC 端網站的時候&#xff0c;常常發現在一些有工具欄或者 Tab 欄的頁面會有頂欄固定的效果。簡單來說&#xff0c;在頁面未開始滾動時頂欄處在其原有的位置上&#xff0c;當頁面向下滾動一定區域后&#xff0c;頂欄會跟隨滾動固定在…

HTTPS證書——網站如何實現HTTPS訪問?

實現網站HTTPS訪問可以簡化為以下四個基本步驟&#xff0c;確保過程既通俗易懂又條理清晰&#xff1a; 1. 申請SSL證書 - 目的&#xff1a;SSL證書是實現HTTPS加密的關鍵&#xff0c;它驗證了網站的身份&#xff0c;并提供了加密數據所需的密鑰。 - 操作&#xff1a;首先&…

超鏈接的魅力:HTML中的 `<a>` 標簽全方位探索!

&#x1f310;超鏈接的魅力&#xff1a;HTML中的 標簽全方位探索&#xff01; &#x1f3de;?基礎營地&#xff1a;認識 <a> 標簽&#x1f6e0;?基本語法&#x1f4da;屬性擴展 &#x1f680;實戰演練&#xff1a;超鏈接的多樣玩法&#x1f308;內鏈與外鏈&#x1f4c…

TypeScript(持續更新中...)

1.TypeScript是什么&#xff1f; TypeScript是javaScript的超集。 2.使用TypeScript 1&#xff09;全局安裝nodejs 2&#xff09;安裝TypeScript編譯器 npm i -g typescript 3.編譯ts文件 //注意&#xff1a;需要在ts文件同級目錄執行此命令&#xff0c;否則會報找不到…