SQL注入_1-6_user-agent注入
SQL注入_1-6_user-agent注入
一.概念
User Agent中文名為用戶代理,簡稱 UA,它是一個(gè)特殊字符串頭,使得服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本、CPU
類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
一些網(wǎng)站常常通過判斷 UA 來給不同的操作系統(tǒng)、不同的瀏覽器發(fā)送不同的頁面,因此可能造成某些頁面無法在某個(gè)瀏覽器中正常顯示,但通過偽裝 UA
可以繞過檢測。
二.觀察沒有過濾useragent的代碼
1.提交post參數(shù)的password和username,將涵name的參數(shù)傳遞給value變量
2.過濾參數(shù)字符,以及固定字節(jié)
插入user-agent,賦值給¥uagent
沒有做過濾
在sql語句中直接使用插入函數(shù),沒有做任何過濾
由此判斷存在SQL注入
二.模擬實(shí)戰(zhàn)演練
打開less-18
代理截?cái)?br />
重放 攻擊
這3個(gè)圖應(yīng)該放前面,放錯(cuò)了,
但是也可以看看
這里解釋一下
第一個(gè)參數(shù)可以是任意數(shù)字,這里我們設(shè)置為一,
第二個(gè)是小path字符
第三個(gè)是就是自己需要的數(shù)據(jù)
concat是用來鏈接數(shù)據(jù)庫的數(shù)據(jù)的
因?yàn)榇撕瘮?shù)會(huì)導(dǎo)致數(shù)據(jù)庫報(bào)錯(cuò)
所以就可以看到我們想要的數(shù)據(jù)
好,我們接著剛剛的來
’ and updatexml(1,concat(0x7e,(select database()),0x7e),1) or ‘1’='1
在user-agent處輸入MySQL的報(bào)錯(cuò)函數(shù)
可以看到爆出了數(shù)據(jù)庫名
由此推測出,user-agent處是存在sql注入的
在需要測試的地方加上*,并保存到root目錄下
直接暴庫
算了,太慢了,我們直接報(bào)當(dāng)前使用的數(shù)據(jù)庫
由于暴庫需要時(shí)間,所以我們最后在看結(jié)果,先看看下一個(gè)注入
接著來看看 referer注入
可以看到Referer頭儲(chǔ)存在了變量uagent中
又直接帶入SQL語句
沒有過濾
由此推斷
存在sql注入
好,我們打開less-19
輸入賬號(hào)密碼,然后代理截?cái)?br />
輸入反斜杠,MySQL報(bào)錯(cuò),由此推斷存在sql注入
剛剛那條語句,也爆出了數(shù)據(jù)庫名
這里我們使用其他方法
使用基于時(shí)間的注入
我們可以看到?jīng)]有時(shí)間注入時(shí)
服務(wù)器響應(yīng)時(shí)間為1秒左右
加時(shí)間注入以后
’ or (length(database()))>9 or if(1=1,sleep(5),null) or ‘1’ ='1
服務(wù)器響應(yīng)為6秒
,由此推斷存在基于時(shí)間的盲注
解釋一下這條語句
判斷數(shù)據(jù)庫名是否大于9
或者 如果1=1 則,睡眠5秒,
最后‘1’ =’1 是為了閉合前面的單引號(hào),否則會(huì)報(bào)錯(cuò)
方法一樣,在存在注入的地方加*號(hào)然后打包到root目錄下,進(jìn)行探測就不一一舉例了
當(dāng)我們需要探測輸入?yún)?shù)是否存在注入時(shí)
可以 --data=‘參數(shù)’
當(dāng)然,與我們這次不同,因?yàn)檫@次用戶輸入的參數(shù)已經(jīng)被過濾
所以用了也探測不出來
最后我們再來看看user-agent探測那個(gè)窗口
可以看到,使用基于時(shí)間的方法,已經(jīng)報(bào)出了他的數(shù)據(jù)庫名
其他具體的注入就不一一寫了
總結(jié)
以上是生活随笔為你收集整理的SQL注入_1-6_user-agent注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL注入1-5_cookie基于bas
- 下一篇: sql_mysql注入基础篇