一栽烂、SQL注入
0x01寬字節(jié)注入
copy一份解釋過(guò)來(lái):mysql在使用GBK編碼的時(shí)候畔勤,會(huì)認(rèn)為兩個(gè)字符為一個(gè)漢字,例如%aa%5c就是一個(gè)漢字(前一個(gè)ascii碼大于128才能到漢字的范圍)熬芜。我們?cè)谶^(guò)濾 ' 的時(shí)候参淫,往往利用的思路是將 ' 轉(zhuǎn)換為 \'
因此我們?cè)诖讼朕k法將 ' 前面添加的 \ 除掉,一般有兩種思路:
%df吃掉 \ 具體的原因是urlencode('\) =
%5c%27,我們?cè)?5c%27前面添加%df晾咪,形成%df%5c%27收擦,而上面提到的mysql在GBK編碼方式的時(shí)候會(huì)將兩個(gè)字節(jié)當(dāng)做一個(gè)漢字,此事%df%5c就是一個(gè)漢字谍倦,%27則作為一個(gè)單獨(dú)的符號(hào)在外面塞赂,同時(shí)也就達(dá)到了我們的目的。
將 \' 中的 \ 過(guò)濾掉昼蛀,例如可以構(gòu)造 %**%5c%5c%27的情況宴猾,后面的%5c會(huì)被前面的%5c給注釋掉。這也是bypass的一種方法叼旋。
GB2312鳍置、GBK、GB18030送淆、BIG5、Shift_JIS等這些都是常說(shuō)的寬字節(jié)
詳細(xì)解釋http://www.91ri.org/8611.html
有了原理了就來(lái)個(gè)栗子
題目:http://103.238.227.13:10083/index.php?id=1
直來(lái)直去怕轿,不用一步一步猜測(cè)字段了偷崩,源碼里看到gb2312,提示了讓我們寬字節(jié)注入
果然有效果
order by 一下2正常3錯(cuò)誤撞羽,那就是2了
爆出數(shù)據(jù)庫(kù)吧~
好了阐斜,文章寫完了
指定是sql5.key,老是出錯(cuò)。诀紊。谒出。。邻奠。
0x02題目來(lái)自2017全國(guó)大學(xué)生安全競(jìng)賽
這題考察的 是被轉(zhuǎn)義后的單引號(hào)不會(huì)參與閉合笤喳,
此時(shí)看到用戶名中的單引號(hào)被替換成了\,那么就把本來(lái)用于括起來(lái)name的單引號(hào)變成了\'這個(gè)樣子碌宴,而轉(zhuǎn)義過(guò)的單引號(hào)不會(huì)參與閉合杀狡,就出現(xiàn)了錯(cuò)誤的判斷,在or 1=1時(shí)發(fā)現(xiàn)空格被刪除了贰镣,那么可以/**/代替繞過(guò)了呜象,此時(shí)查詢的語(yǔ)句為username='or 1=1 #\'or nickname='or 1=1#\'此時(shí)第一個(gè)單引號(hào)和第三個(gè)單引號(hào)閉合構(gòu)造出了永真的語(yǔ)句
此時(shí)看到了good job
二、文件包含
0x01
題目http://120.24.86.145:8003/
源碼
var_dump打印出數(shù)據(jù)類型以及數(shù)據(jù)值碑隆,show_source以高亮打印出源碼恭陡,參考http://blog.csdn.net/l3oog1e/article/details/72758429
寫的writeup。打印出flag.php
0x02
題目http://120.24.86.145:8004/index1.php
//包含文件flag1.php上煤,如果args不為空休玩,將參數(shù)值賦值給$args,如果args值不為數(shù)字或字符輸出args error,然后這里不管是否錯(cuò)誤都不會(huì)影響到eval的語(yǔ)句執(zhí)行,可以看到var_dump的括號(hào)里將$args又變成了一個(gè)變量哥捕,所以如果我們傳入的字符串是某個(gè)變量的名字那么變量的值就會(huì)被打印出來(lái)牧抽,此時(shí)用全局變量$GLOBALS的話,由于已經(jīng)包含了flag1.php遥赚,所以flag1.php的內(nèi)容也會(huì)被打印出來(lái)