RCE & injection
講師:堇姬 @ Izcc-ctf
2023.12.8
堇姬Naup(網管/美宣)
成電二年級/幽夜工作室繪師
CKCSC36
DC : naup_sumire_hime
IG : ckcsc36th_naup
涉獵C++、C、python、遊戲(tkinter、pygame)、資安(Web、Crypto)、AI、flask、html/css/js、 PHP、DC bot、GO
喜歡看輕小說、動畫、Vtuber、打音遊,也喜歡看百合,就是一個長年混跡ACG的宅女。
夢想是可以成為很電的駭客跟繪師,也想自己寫出一個AI老婆。
本日重點
-
SQL 語法
-
SQL injection
-
RCE
-
command injection
-
檔案上傳漏洞
SQL 語法
一種用於存取和操作資料庫的標準語言
Customers
SELECT CustomerName, City FROM Customers;
SELECT 欄位 FROM 表名
SELECT 欄位名 FROM 表名
WHERE 欄位名=內容;
WHERE
子句用於過濾記錄
SELECT * FROM Customers WHERE Country='Mexico';
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
DELETE FROM table_name WHERE condition
DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
SQL injection
透過修改 SQL 語句,進而達到對資料庫的惡意攻擊
SELECT username,password FROM users WHERE username = '{username}'
AND password = '{password}'
假設你的帳密分別是user跟123456
而管理員的帳號是admin,但密碼你不知道
想一想這樣的寫法會不會造成問題?
SELECT id, username FROM users WHERE username = 'admin'
AND password = '' OR 1=1 --'
' OR 1=1 --
防範
-
針對特殊字元進行過濾
-
使用「參數化查詢 (Parameterized Query)」來設計資料存取功能。
-
WAF
RCE
Remote Code Execution
攻擊者在組織的電腦或網路上執行惡意程式碼。執行攻擊者控制程式碼的能力可用於多種用途,包括部署其他惡意程式碼或竊取敏感性資料。
command injection
執行伺服器的命令 ( Command ) ,通常有這個漏洞就可以做到遠端程式碼執行( RCE,Remote Code Execution)
#include <stdlib.h>
int main() {
char input[100];
scanf("%s", input);
system("cat"+input);
return 0;
}
這是一個可以輸入文件,來做查詢的程式碼
如果我輸入 vvv.txt
如果有這份文件,就會cat vvv.txt
這樣做有甚麼問題嗎?
如果我輸入vvv.txt;ls
我可以在 ; 後執行任意指令!!
-
後端邏輯透過指令「串接」的方式
-
沒有去驗證使用者的輸入
檔案上傳漏洞
允許使用者上傳文件到其檔案系統,且未對檔名、類型、內容或大小進行足夠的驗證時,就可能產生檔案上傳漏洞。
<?php system($_GET['a']); ?>
一句話木馬
Web Shell
是一種惡意腳本,可以使駭客通過簡單地向正確的端點發送HTTP請求來在遠程網絡伺服器上執行任意命令。
一句話老婆
Web基礎課已經結束了
下一節課會進入Crypto
RCE&injection
By naup96321
RCE&injection
- 74