1. 程式人生 > 實用技巧 >Django2.2 學習筆記1-概念篇

Django2.2 學習筆記1-概念篇

SqlMap簡單使用

有時候我們得到的 網站後臺的登入密碼 = 網站伺服器的遠端桌面服務登入密碼 = FTP服務登入密碼 (有機率)

sql注入 mysql

可使用綜合性掃描軟體掃描,在配合手工檢測確認注入點,得到注入點後用sqlmap

https://www.freebuf.com/sectool/164608.html 超詳細SQLMap使用攻略及技巧分享

SQLMAP注入之使用者手冊 列印細看
https://www.cnblogs.com/hongfei/p/3872156.html

引數選其講解

引數:-r
sqlmap可以從一個文字檔案中獲取HTTP請求,這樣就可以跳過設定一些其他引數(比如cookie,POST資料,等等)。

比如文字檔案內如下:
POST /vuln.php HTTP/1.1
Host: www.target.com
User-Agent: Mozilla/4.0

id=1

當請求是HTTPS的時候你需要配合這個--force-ssl引數來使用,或者你可以在Host頭後門加上:443

引數:-m
檔案中儲存url格式如下,sqlmap會一個一個檢測

www.target1.com/vuln1.php?q=foobar
www.target2.com/vuln2.asp?id=1
www.target3.com/vuln3/id/1*

從檔案中載入HTTP請求
引數:--cookie,--load-cookies,--drop-set-cookie


這個引數在以下兩個方面很有用:
1、web應用需要登陸的時候。
2、你想要在這些頭引數中測試SQL注入時。
可以通過抓包把cookie獲取到,複製出來,然後加到--cookie引數裡。

在HTTP請求中,遇到Set-Cookie的話,sqlmap會自動獲取並且在以後的請求中加入,並且會嘗試SQL注入。
如果你不想接受Set-Cookie可以使用--drop-set-cookie引數來拒接。
當你使用--cookie引數時,當返回一個Set-Cookie頭的時候,sqlmap會詢問你用哪個cookie來繼續接下來的請求。當--level的引數設定為2或者2以上的時候,sqlmap會嘗試注入Cookie引數。

HTTP User-Agent頭
引數:--user-agent,--random-agent
預設情況下sqlmap的HTTP請求頭中User-Agent值是:
sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
可以使用--user-anget引數來修改,同時也可以使用--random-agnet引數來隨機的從./txt/user-agents.txt中獲取。
當--level引數設定為3或者3以上的時候,會嘗試對User-Angent進行注入。

HTTP(S)代理
引數:--proxy,--proxy-cred和--ignore-proxy
使用--proxy代理是格式為:http://url:port。
當HTTP(S)代理需要認證是可以使用--proxy-cred引數:username:password。
--ignore-proxy拒絕使用本地區域網的HTTP(S)代理。

HTTP請求延遲
引數:--delay
可以設定兩個HTTP(S)請求間的延遲,設定為0.5的時候是半秒,預設是沒有延遲的。
設定超時時間

修改注入的資料
引數:--tamper
sqlmap除了使用CHAR()函式來防止出現單引號之外沒有對注入的資料修改,你可以使用--tamper引數對資料做修改來繞過WAF等裝置。
下面是一個tamper指令碼的格式:

# Needed imports
from lib.core.enums import PRIORITY
# Define which is the order of application of tamper scripts against
# the payload
__priority__ = PRIORITY.NORMAL
def tamper(payload):
    '''
    Description of your tamper script
    '''
    retVal = payload
    # your code to tamper the original payload
    # return the tampered payload
    return retVal

可以檢視 tamper/ 目錄下的有哪些可用的指令碼
https://blog.csdn.net/qq_34444097/article/details/82717357
https://blog.csdn.net/Litbai_zhang/article/details/99681398
https://www.cnblogs.com/milantgh/p/4343898.html

注入技術
測試是否是注入
引數:--technique
這個引數可以指定sqlmap使用的探測技術,預設情況下會測試所有的方式。
支援的探測方式如下:
B: Boolean-based blind SQL injection(布林型注入)
E: Error-based SQL injection(報錯型注入)
U: UNION query SQL injection(可聯合查詢注入)
S: Stacked queries SQL injection(可多語句查詢注入)
T: Time-based blind SQL injection(基於時間延遲注入)

SQLMap 使用心得

I. 提高SQLMap測試等級

‐‐risk 這個引數就是把測試等級提高,如是 --risk 3 那麼測試就是最高,這樣SQLMap會測試更加多的注⼊語句。
舉個慄⼦:
沒有加 ‐‐risk 3 的情況下,SQLMap 就測試 5hoanqu' and 789=789 and 'hcme'='hcme ,
但是如果加了 ‐‐risk 3 引數,就會增加測試語句, 5hoanqu') and 789=789 and ('hcme'='hcme ,對⽐起來,雖然只是加了2個字元,但是意義卻相差很多了的。

II. 增加被測試的引數

‐‐level 3 假設存在注⼊的URL為: http://baidu.com/new.php?nid=5haoanqu ,在GET請求中,我們⽬前看得到的引數就⼀個:nid.但是當我們訪問過⼀個⽹站之後,我們都會得到⼀個cookie,當我們繼續訪問⽹站的時候,瀏覽器就會載入我們的cookie,⼜因為cookie存在我們本地,我們⼜是可以控制這個cookie的,所以我們就可以在cookie上⾯加⼊我們注⼊測試語句。⽽像UserAgent頭也是⼀樣的,具體你可以看看以下⽂章:

  1. https://www.oschina.net/question/243681_48522 通過HTTP Headers 進⾏SQL注⼊
  2. http://www.91ri.org/4714.html 利⽤SQLMap進⾏cookie注⼊

III. 找到正確的請求頁⾯

通常情況下我們直接在瀏覽器看到的URL上⾯的引數就是被帶⼊資料庫查詢的引數,但是事實上並不是全部的東西都如我們眼睛看到的樣⼦。
注意點:

  1. 我們在填寫搜尋關鍵詞的時候,⼀定要找出那些能夠搜尋出內容的關鍵詞,⽐如你在實戰中搜索dark5,但是⽹站沒有關於dark5的⽂章內容,就不會出現正常的搜尋結果,這樣我們把注⼊語句加在dark5的後⾯時,是沒有辦法判斷我們的SQL語句是否成功執⾏,就沒有辦法達到我們想要的結果了。
  2. 有些⽹站不⼀定存在這麼多個GET或者POST的請求包的,⽐如某個⽹站,你填寫好搜尋關鍵詞後,就先請求⼀個GET再請求⼀個POST包就完事了,但是⼤多數情況是要麼請求⼀個GET,要麼請求⼀個POST包。主要是看⽹站是否採⽤ajax。那麼阿⾔這個⽹站的注⼊點就是第3個的POST和第4個的POST請求,因為從這個2個“Response”就能反應出SQL語句執⾏的結果。

IV. 指定測試位置

* ⽤這個引數來指定測試語句的位置,這個通常⽤在注⼊偽靜態頁⾯。也可以⽤在正常注⼊點,在⼿⼯確認某個位置可注⼊的使⽤,使⽤該引數可提高注⼊效率。
相關偽靜態注⼊⽂章和視訊如下:
滲透⽇記-利⽤SQLMAP偽靜態注⼊

SQLMap 配合 DNSlog

似懂非懂..

SQLMap注入偽靜態

漏洞發現

經發送到 Repeater 加 ' 測試發現是注⼊。
注⼊看測試的位置,是在值的後⾯。 形如 http://www.baidu.com/index.php/Home/English/en_NewsDetail/id/92.html 的URL格式,⼤概率就是偽靜態,即偽裝成靜態⽹頁的動態連結。這種情況我們是可以測試注⼊的。 (92' 用來嘗試測試)

SQLmap注⼊引數

與正常的測試⽅法沒啥不同,唯⼀的就是指定測試payload的位置。
⽐如本例中payload位置是放在 http://www.baidu.com/index.php/Home/English/en_NewsDetail/id/92[payload].html ,那麼我們就告訴sqlmap在哪注⼊就可以了,通過在放置payload位置加上 * 就可以了,即: sqlmap -u
http://www.baidu.com/index.php/Home/English/en_NewsDetail/id/92*.html
剩下的就是按正常的注⼊即可。

SQLMap處理高許可權的SQL Server的注入

找到注入點,用sqlmap注入,查詢是否是系統許可權sa,後再執行--os-shell,互動式os_shell介面,但不是真正的shell,只是像而已,手注的操作都可以使用,如果無回顯,可用遠端日誌dnslog來判斷shell是否成功執行命令結果,或者執行命令不知道; 不必太過拘泥於結果顯示回來;
echo 1 > 網站地址\1.txt ,發現是可行的
--sql-shell 許可權不夠大,執行一些資料庫命令

SQLMap處理高許可權的mysql的注入

找到注入點,用sqlmap注入,查資料庫、當前使用者許可權,爆出物理路徑
是高許可權,--os-shell,--sql-shell