日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > Sqlserver > SQL查詢結(jié)果集對注入的利用與影響

SQL查詢結(jié)果集對注入的利用與影響

來源:程序員人生   發(fā)布時間:2014-05-09 01:46:32 閱讀次數(shù):2804次
對于注入而言,錯誤提示是極其重要。所謂錯誤提示是指和正確頁面不同的結(jié)果反饋,高手是很重視這個一點的,這對于注入點的精準(zhǔn)判斷至關(guān)重要。本問討論下關(guān)于幾類錯誤和他產(chǎn)生的原理,希望對讀者有所幫助。

錯誤提示主要有邏輯錯誤和語法錯誤以及腳本運行錯誤三類。

一:邏輯錯誤

簡單的例子是1=1 1=2這兩個,1=1與1=2頁面不同的原理是什么?以$sql = “select * from news where id=$_GET[id]”為例。

select * from news where id=1 and 1=2產(chǎn)生的結(jié)果集為NULL,然后程序取值得時候,就會去出空值,無法顯示。當(dāng)然有的程序發(fā)現(xiàn)SQL執(zhí)行結(jié)果集為空,就立即跳轉(zhuǎn),效果就不顯鳥。值得注 意的是,有的如Oracle Postgresql的數(shù)據(jù)庫在結(jié)果集為空情況下會再頁面上表現(xiàn)字符型null字樣,這算是個特點。如果使用or條件,比如

select * from news where id=1 or 1=1

和and 1=2得結(jié)果正好相反,他的結(jié)果集十分龐大。如果SQL語句如此,再加上程序是循環(huán)讀取結(jié)果集(一些編程上的陋習(xí))那么會取出所有結(jié)果,結(jié)果可能運行很慢,在數(shù)據(jù)量巨大的oracle上容易出現(xiàn)。這個例子會出現(xiàn)什么呢,一般程序取出結(jié)果集中的第一條結(jié)果,那么很可能已經(jīng)不是id=1的那條新聞了,這就是由些小菜奇怪有時候or 1=1頁面會發(fā)生變化的原因。

歸根到底,都是結(jié)果集不同造成的,靈活掌握是關(guān)鍵,這并非單純的經(jīng)驗問題。

二:語法錯誤

語法錯誤時比較熟悉的,比如對于SQL Server,PgSQL,Sybase的注入錯誤提示都很重要,因為利用它的特性來獲取信息很快速。語法錯誤造成的結(jié)果可能是SQL錯誤而中斷腳本執(zhí)行,但是腳本或服務(wù)器設(shè)置屏蔽錯誤的情況下,程序得到繼續(xù)執(zhí)行,但是結(jié)果集不存在,連NULL都算不上,反饋給攻擊者的很可能就是結(jié)果集為空的情況,其實這是腳本的處理結(jié)果。當(dāng)然Oracle PgSQL表現(xiàn)null。

三:運行錯誤不用說了,典型的就是利用mysql注入benchmark讓腳本運行超時得到物理路徑,以及利用超時來獲得不同的表征進行盲注入。

四:邏輯錯誤和語法錯誤的結(jié)合。

當(dāng)表征極不明顯的時候,利用類似iff這樣的函數(shù)進行正確與否的區(qū)分有時候會成救命稻草。因為語法錯誤和邏輯錯誤的表征大多數(shù)情況都會有不同。

iff(1=1,1,‘no’)這個會產(chǎn)生結(jié)果1 注意是數(shù)字,而iff(1=2,1,‘no’)這個會產(chǎn)生‘no’ 是字符。那么id=1 and 1=iff(1=1,1‘no’)正確是必然成立的,而id=1 and 1=iff(1=2,1,‘no’)會因為類型不同發(fā)生語法錯誤。不過可惜的是似乎支持iff函數(shù)的數(shù)據(jù)庫不多,呵呵。

現(xiàn)在講結(jié)果集在注入中的利用原理。

一:從‘or’‘=’開始

這是學(xué)習(xí)SQL注入的初級課程,登陸漏洞。我簡略從SQL結(jié)果集上分析。

$sql = “select top 1 * from admin where username=‘$username’ and password=md5(‘$password’)”;

顯而易見,‘or’‘=’的加入使SQL語句返回了一條記錄,這才使驗證通過。

二:再看現(xiàn)在的驗證中的SQL

$sql = “select top 1 * from admin where username=‘$username’”;

結(jié)果集不為空才根據(jù)抽取的記錄集中的密碼值與用戶提交的密碼MD5值進行比對來進行驗證。這樣,你突然發(fā)現(xiàn)‘or’‘=’的計策失敗鳥,但是后臺明明有注 入,這就是驗證方法造成的。跟進這個驗證過程,‘or’‘=’的確產(chǎn)生了一個結(jié)果集(admin表中的第一行記錄)但是遺憾的事,后來的密碼比對沒法通 過,驗證無法成功。

思路很簡單,網(wǎng)上有案例,我重在原理,利用union來產(chǎn)生想要的結(jié)果集。比如‘and(1=2)union select top 1 username,’123456得md5值‘,id from admin where username=’admin

這樣產(chǎn)生了admin的記錄信息,但是記錄集中的密碼那個位置的值被替換成了123456的md5值,這樣,使用admin 123456通過驗證并且繼承他的權(quán)利。

更有甚者全部用‘xxx’的方法來盲狙,這就很“過分”鳥。不過在sql2000 sybase這些嚴(yán)格要求類型匹配的數(shù)據(jù)庫來說,這樣不能撼動“管理員登陸”的,因為執(zhí)行時發(fā)生了語法錯誤,結(jié)果集為NULL。另外以前ewebeditor注入漏洞來上傳馬也是這個union操作結(jié)果集來達到目的的經(jīng)典案例。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 操出白浆视频 | 国产精品久久久影院 | 福利片免费观看 | 玖玖精品 | re久久| 日韩精品视频三区 | 久久久久久久国产精品 | 欧美aaaa视频| 国产精品久久久久久久久久久久午夜 | julia中文字幕久久一区二区 | 日韩成人av在线 | 九九av | 欧美视频三区 | 国产精品久久久久久影视 | 欧美日韩国产中文字幕 | 激情欧美亚洲 | 成人免费在线观看 | 亚洲欧美日韩精品久久亚洲区 | 国产成人一区二区三区 | 国产精品一区二区在线播放 | 黄色不卡 | 久久机热这里只有精品 | 欧美日一区二区 | 精品国产一区二区三区久久久 | 91网站免费看 | 日韩一二 | 欧美日韩在线播放视频 | 成人在线视频一区 | 久久精品在线 | 最好的2019中文字幕视频 | 免费a级人成a大片在线观看 | 国产日韩欧美一区 | av在线播放免费 | 免费黄视频网站 | 日韩欧美小视频 | 精品久久久一区二区 | 伊人久久亚洲 | 99国产精品久久久久久久久久 | 91豆麻精品91久久久久久 | 亚洲激情一区 | 精品一区二三区 |