sql注入的基礎方法參考:由sqli-labsless-5學習各種基礎盲注技巧/(
仍以sqli-labs為例,在基礎之上對sql注入進行一些技巧介紹,但是基本的盲注方法還是那幾種型別,只不過針對有簡單防禦性的**進行了一些不一樣的payload變換,以便在基礎之上提公升對sql注入的認識和經驗。
這個技巧在php語句繞過中也很有。
less23,後台查詢語句如下:
$sql
="select * from users where id='$id
' limit 0,1"
和基礎的注入一樣是簡單的查詢語句,區別在於過濾了注釋符號#和–+,那麼就用到閉合技巧了。
構造payload:
-1' union select 1,@@datadir,'3
id的引號被閉合,@@datadir的地方就是我們進行查詢的地方,下面就可以和基礎的注入一樣進行了。
還以less23為例吧,雖然不用巢狀也能做出來。
巢狀就是在sql語句中加上sql語句,這裡就是把@@datadir這換成sql注入語句。例如:
-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),'3
通俗來說就是可以先把一些資訊利用後台資料庫語句以注入的方式儲存到資料庫中,然後再對其進行呼叫,有時候可以起到很大的作用。
以less24為例,這是乙個我們可以進行註冊,並且登陸後可以修改密碼的環境。
修改密碼時的語句為:
update users set passwd="new_pass" where username ='name' and password='passwd'
首先我們註冊乙個使用者名為admin』#的賬號,密碼設為123456吧,然後登陸上去。
update users set passwd="new_pass" where username ='admin'#' and password=''
相當於繞過了admin的原密碼輸入直接修改了admin的密碼,然後就可以用修改得到的admin的密碼直接登陸了:
(1)大小寫變換
(2)雙寫變換。
常用的關鍵字被過濾時,使用雙寫繞過,如ununionion、selselectect,oorr等。
(3)新增注釋符/**/。
假如有乙個登陸介面,username中過濾了()括號,password中過濾了注入關鍵字updatexml、extractvalue等,而注入點在username中,可以結合注釋符進行注入:
1' and extractvalue/*&password=*/(1,concat(0x7e,(database()),0x7e)) or '1
這樣就能注釋掉password=成功進行注入了。
(4)and、or和&&、||的轉換使用。
當and和or被過濾時,可以用&&和||進行替換。以less25為例,payload為:
id=1' || extractvalue(1,concat(0x7e,database()))--+
注入方式就看環境漏洞了,或許報錯不能用,那就找延時注入、聯合注入、bool注入了。
這些用法都是最基本的,可以結合實際環境進行靈巧變換,或者是針對頁面反饋和所學知識經驗制定解決方案。
(5)payload編碼
對payload進行hex或urlencode編碼再使用。
(6)空格的過濾
空格過濾可以用/**/、++、%a0(空格)、%0b(tab鍵-垂直)、%09(tab鍵-水平)等進行繞過。
當然可能目標環境有很多的過濾,這還需要我們對其進行測試之後再指定出相應的注入方案
寬位元組注入主要針對伺服器對 』 和 \ 的過濾,在注入時很多時候需要在id的值後面加上單引號,一般的過濾就是後台把提交的單引號前面加上 \ 進行轉義:\』,從而對注入進行防禦。當然也有雙引號的情況,方法是一樣的。
寬位元組注入原理:mysql使用gbk編碼時,會把兩個字元看做乙個漢字,例如%aa%5c 就是乙個漢字(前乙個 ascii 碼大於 128 才能到漢字的範圍)。
所以該注入的主要作用就是除掉過濾單引號的 \ ,一般會有兩種方法:
1、%df 吃掉
具體的原因是 urlencode(\』) = %5c%27,我們在%5c%27 前面新增%df,形成%df%5c%27,而上面提到的 mysql 在 gbk 編碼方式的時候會將兩個位元組當做乙個漢字,此事%df%5c 就是乙個漢字,%27 則作為乙個單獨的符號在外面,同時也就達到了我們的目的。
2、將 \』 中的 \ 過濾掉
例如可以構造 %**%5c%5c%27 的情況,後面的%5c 會被前面的%5c給注釋掉。這也是 bypass 的一種方法。
兩層架構是tomcat+apache,利用hpp(http parameter pollution)–http 引數汙染攻擊。
SQL盲注 時間盲注,dnslog盲注
時間盲注原理 id get id sql select from users where id id limit 0,1 result mysql query sql row mysql fetch array result if row else 存在sql注入漏洞 然而頁面不會回顯資料,也不會回...
sql盲注特點 SQL盲注
盲注原理 盲注的分類 盲注常用函式 一 sql盲注概述 1.如果資料庫執行返回結果時只反饋對錯不會返回資料庫中的資訊 此時可以採用邏輯判斷是否正確的盲注來獲取資訊。2.盲注是不能通過直接顯示的途徑來獲取資料庫資料的方法。在盲注中,攻擊者根據其返回頁面的不同來判斷資訊 可能是頁面內容的不同,也可以是響...
布林型盲注 時間型盲注
布林型盲注核心思想 利用判斷語句杢證明推測是否正確。推測正確時,頁面正常顯示 錯誤時,頁面異常。盲注的一般步驟 1 求閉合字元 2 求當前資料庫名的長度 3 求當前資料庫名對應的ascii值 4 求表的數量 5 求表名的長度 6 求表名對應的ascii值 7 求列的數量 8 求列名的長度 9 求列名...