BUUCTF web之随便注

news2025/1/12 2:53:16

启动靶场访问如下,输入1',报错,可知是字符型注入,变量由单引号包裹

输入1' and 1=1 --+,显示正常

先直接用sqlmap注入一下,显示存在注入,但是始终注入不出来数据库,“[ERROR] unable to retrieve the number of databases”,猜想应该是存在字符过滤

因为现在还不知道是什么原因导致的sqlmap注入不出来,所以先尝试手注。输入框中输入1和2显示的结果不同,像这种直接回显输入的最先尝试联合注入

  1. 联合注入
?inject=1' order by 2 --+   //正常
?inject=1' order by 3 --+   //不正常,所以存在2列
  1. 获取回显点
?inject=1' union select 22,33--+

回显了一个过滤语句,发现存在正则将“select|update|delete|drop|insert|where|.”进行了过滤,且不缺分大小写。几乎所有常用的查询词都被过滤了。这里使用的是preg_match()函数进行正则过滤,其返回的值是1或者0,所以这里无法进行双写绕过

preg_match使用正则对字符进行匹配,匹配成功返回1,否则返回0

但是;分号没有被过滤,可以尝试堆叠注入

堆叠注入

在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下,我们在结束一个sql语句后继续构造下一条语句,会不会一起执行? 因此这个想法也就造就了堆叠注入。

但是这种注入方式并不是十分的完美的。在我们的Web系统中,因为代码通常只返回一个查询结果,因此,堆叠注入第二个语句产生的错误或者结果只能被忽略,我们在前端界面是无法看到返回结果的。

一般存在堆叠注入的都是用 mysqli_multi_query() 函数执行的sql语句,该函数可以执行一个或多个针对数据库的查询,多个查询用分号进行分隔。

  1. 获取所有数据库
?inject=';show databases --+

  1. 获取当前数据库中的所有表
?inject=';show tables --+

查询出了两个表 “1919810931114514”和“words”

接着对这两个表进行查询

  1. 查询表‘1919810931114514’中的字段
?inject=';show columns from  `1919810931114514`--+

发现表中只存在一个flag字段,那这里面很可能就是放在flag值。但是值我们无法查看,查看值需要用到select关键词,而select词被过滤,所以这里先放一放

  1. 查询另外一个表“words”的字段
?inject=';show columns from  `words`--+

显示存在两个字段,即有id和data 两列,此时并没有什么头绪

按照这种查找方法,继续对其他数据库表进行查找,但是依然没发现flag放在哪里,所以还是回到一开始的`1919810931114514`这个表中,flag很可能存在这里。

  • 窗口提交查询的回显数据为两个字段,这和word表中两个字段在字段数量和类型上是一样的
  • 且word表是“show tables”时显示的表,显示的为当前数据库中的表,而当前数据库只存在`1919810931114514`和`words`,这样基本就可以判断我们提交查询的窗口就是在这个表里查询的数据,查询语句很有可能是:select id,data from words where id =,如下:(2为输入的id,miaomiaomiao为回显的data字段)

思绪~~~~~~~~~~~~~~~~~~~~~~~~~~~~··、

不能直接查询表中的所有值。这里有两张表,回显内容肯定是从words这张表中回显的,那我们怎么才能让它回显flag所在的表呢?思考点依然让在堆叠注入上

因为可以堆叠查询,这时候就想到了一个改名的方法,把words随便改成words123,然后把1919810931114514改成words,再把列名flag改成id(或data)。然后程序查询就能查询到原本‘1919810931114514’表中的数据

payload

';rename table words to words123;rename table `1919810931114514` to words;alter table words change flag id varchar(100);--+

#rename命令用于修改表名。
#rename命令格式:rename table 原表名 to 新表名;

#alert修改字段名及字段属性值
alert table 表名 change 旧字段名 新字段名 新字段属性; 

再提交 ' or 1=1--+

ps:那这里为什么要提交 ' or 1=1--+ 才会显示flag了?因为原本是查询words中的id字段,其值为1、2、...,现在修改了是查询原本`1919810931114514`表的flag字段,其值为一些字符串。所以如果直接查询 如id=1肯定是查不出来的,这就需要让一条语句将所有内容查询出来

如下例子,查询 id=-1,因为-1不存在,所以查询无结果

但是将id值换成 id=-1 or 1=1,or 1=1恒为真,所以将结果全部查询出来了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arnold渲染器适合什么样的电脑配置

Arnold 是 Solid Angle 和 Sony Pictures Imageworks 联合打造的顶级光线追踪 3D 渲染器。该程序是 Sony Imageworks 的主要渲染器,被全球 300 多家工作室使用。Arnold 6.0 及更高版本支持 GPU 渲染。Arnold GPU 的硬件建议是什么? 1. Arnold GPU 硬件推…

OpenKylin适配和虚拟打印机

最近在测国产OS客户端部分。首先客户端程序在CentOS全部使用没毛病,但是CentOS桌面体验比较差。然后就试了UOS,在UOS上测试到打印这块花了很多时间,碰到问题是CUPS有反应,但是没生成PDF文件,各种试了好久没解决。就寻思…

Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据

单Activity多Fragment&#xff0c;Navigation实现Fragment跳转&#xff0c;Fragment之间通过ViewModel共享数据1、MainActivity2、HomeFragment, DetailFragment2.1、HomeFragment2.2、DetailFragment3、MyViewModel参考1、MainActivity 1、activity_main.xml <?xml vers…

ovs-vswitchd的启动分析

ovs-vswitchd的启动分析&#xff08;无修改源码&#xff09; &#xff08;一&#xff09;主要数据结构和概念了解 1.概念 在 OVS 中, 有几个非常重要的概念&#xff1a; Bridge: Bridge 代表一个以太网交换机&#xff08;Switch&#xff09;&#xff0c;一个主机中可以创建一…

Metabase学习教程:提问-4

Metabase中的表连接 如何在简单和自定义问题中使用查询编辑器连接Metabase中的表。 当涉及到分析数据时&#xff0c;必须要使用连接是一个事实&#xff0c;在Metabase&#xff0c;我们试图使您的问题的答案尽可能简单&#xff0c;即使这需要一些更复杂的策略。在本文中&#…

Spring中拦截器重复注册的问题排查

注册器JpushInterceptor 功能&#xff1a;新版的Java推送服务&#xff0c;将部分请求转发到老版node 查看日志发现拦截器日志重复 同一个链路&#xff0c;发现&#xff0c;经过同一个拦截器两次 debug发现注册器重复注册 第一个通过registry.addInterceptor注册 是通过We…

组合数学总结

文章目录三、递推关系3.1 常系数线性递推关系特征根法1.齐次递推关系2.非齐次方程母函数方法三、递推关系 3.1 常系数线性递推关系 k阶齐次递推关系&#xff1a;anc1an−1c2an−2...ckan−k0&#xff0c;ck≠0(3.1.1)k阶非齐次递推关系&#xff1a;anc1an−1c2an−2...ckan−kf…

SpringCloud微服务(四)——Nacos服务注册和配置中心

SpringCloud Alibaba Nacos服务注册和配置中心 Spring Cloud Netflix Projects Entering Mainterance Mode SpringCloud Alibaba&#xff1a; 服务限流降级&#xff1a;默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 Rocke…

在 UltraEdit v15.00 及更高版本中添加用于语法高亮的 wordfile丨使用教程

UltraEdit原生支持开箱即用的最常用编程和标记语言的语法突出显示。但是&#xff0c;我们也有数百个其他语言的单词文件&#xff0c;而且很容易找到并添加您需要的语言&#xff01;重要提示&#xff1a;此电源提示适用于运行 UltraEdit v15.00或 UEStudio v09.10及更高版本的用…

rosjava零散

笔者之前想在非ros环境下使用通信&#xff0c;了解到rosjava可以实现&#xff0c;不过后来换成了rosbridge&#xff0c;也搜集了一些rosjava的资料&#xff0c;放在这里供参考(没时间整理了&#xff0c;格式较乱请见谅) 安装方式&#xff1a;sudo apt-get install ros-indigo-…

Blind Backdoors in Deep Learning Models 论文笔记

#论文笔记# 1. 论文信息 论文名称Blind Backdoors in Deep Learning Models作者Eugene Bagdasaryan Vitaly Shmatikov Cornell Tech出版社USENIX Security Symposium 2021 &#xff08;网安A类会议&#xff09;pdf论文主页 本地PDF代码pytoch_Backdoors_101 2. introduction …

《第一行代码》核心知识点:Android简介

前言 自本文开始&#xff0c;我将更新《第一行代码 Android 第2版.pdf》&#xff0c;&#xff08;提取码&#xff1a;n5ag &#xff09; 核心要点系列&#xff0c;通过阅读本系列文章可以帮助有Android基础的开发人员&#xff0c;去除冗余的基础讲解&#xff0c;直击核心知识点…

GEE开发之Modis_ET数据分析和获取

GEE开发之Modis_ET数据获取1 ET(蒸散量)2 MOD16A2(500米/8天)2.1 MOD16A2下的所有指数2.2 ET影像获取和查看3 ET日数据下载(以MOD16A2为例)4 ET月数据下载(以MOD16A2为例)5 ET年数据下载(以MOD16A2为例)前言&#xff1a;主要介绍Modis下的ET数据的获取和下载&#xff08;日数据…

工厂模式【简单工厂+工厂+抽象工厂】总结

一、简单工厂模式 描述 简单工厂模式是属于创建型模式&#xff0c;又叫做静态工厂方法模式&#xff0c;但不属于23种GOF设计模式之一。简单工厂模式中专门定义一个简单工厂类来负责创建其他类的实例&#xff0c;被创建的实例通常都具有共同的父类。简单工厂类根据传入的参数&a…

wireshark工具详解、数据包抓取分析、使用教程

Wireshark界面 Wireshark查看数据捕获列表 数据包概要信息窗口&#xff1a;描述每个数据包的基本信息。如图&#xff0c;点击某行数据&#xff0c;即可在下方显示该数据包的信息。 1、数据包解析窗口&#xff1a;显示被选中的数据包的解析信息&#xff0c;包含每个数据包的整体…

通过request请求和servlet实现注册跳转界面案例及问题解决

案例&#xff1a;用户登录 * 用户登录案例需求&#xff1a; 1.编写login.html登录页面 username & password 两个输入框 2.使用Druid数据库连接池技术,操作mysql&#xff0c;day14数据库中user表 3.使用JdbcTemplate技术封装JDBC 4.登录成功跳转到Suc…

机器人操作系统ROS(19) 雷达和摄像头融合的资料

搜集的有关雷达和摄像头融合的资料。仅供参考&#xff1a; #1 传感器融合&#xff1a;激光雷达摄像头 摄像头产生的数据是2D图像&#xff0c;对于物体的形状和类别的感知精度较高。深度学习技术的成功起源于计算机视觉任务&#xff0c;很多成功的算法也是基于对图像数据的处理…

图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测

图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测 目录 图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测效果分析基本描述程序实现核心概念参考资料效果分析 基本描述 此版本包含了训练和评估模型的代码,以预测Traffic4Cast挑战数据的交…

ssh-keygen和openssl的区别

OpenSSL OpenSSL是用于应用程序的软件库&#xff0c;该应用程序可保护计算机网络上的通信免遭窃听或需要识别另一方的身份&#xff0c;是SSL和TLS协议的开源实现。采用C语言作为开发语言&#xff0c;具备了跨平台的能力&#xff0c;支持Unix/Linux、Windows、Mac OS等多种平台…

力扣LeatCode算法题第9题-回文数

要求&#xff1a; //给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 //回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 //例如&#xff0c;1…