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

SQL注入(SQL lnjection Base)21

SQL注入(SQL lnjection Base)

sql-labs靶场的搭建

GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.SQLI labs to test error based, Blind boolean based, Time based. - Audi-1/sqli-labsicon-default.png?t=O83Ahttps://github.com/Audi-1/sqli-labs.git

下载sql-labs的压缩包

打开小皮打开localhost的根目录

解压缩后将名字改为sqli方便一点

查询本地ip,打开小皮里面的apche和mysql

创建站点成功

 再打开自己的本地ip后面跟后缀/sqli就可以进入页面

点击setup对数据库的连接

打开sqli里面的connection文件更改里面账号以及密码,改为自己当前数据库的账号密码

打开页面就可以显示以下内容

这里我们要选择php为5的版本才能打开

insert into USER
    (
    id,name,sex,birthday,job)
    VALUES
    (
    1,'ss','male','2004','students')
    ;

insert into USER
    (
    id,name,sex,birthday,job)
    VALUES
    (
    1,'ss','male','2004-12-02','students')
    ;

判断这是字符型,将id=1 and 1=2 判断为一整个整体

如果是数字型,这里我们输出id=2-1显示的结果应该是id=1的结果

这里是level2,我们先判断id=1的时候输出的name和password

这里是我们输出level2输出的数值

我们发现当输出id=2-1的时候输出的是id=1的值,所以我们判断这是数字型注入

数字型不需要闭合符号闭合,字符型需要闭合符号闭合

判断闭合符号

right syntax to use near ''2'' LIMIT 0,1' at line 1

其中我们分析有五个单引号,单引号的分布应该是' '2' ' LMIT 0.1'

也就是第一个和最后一个对应,2里面多了一个单引号

这里是我们输入1'后报错的内容

他是数字型函数所以没有闭合符号

改到less8来输入内容查看闭合信息

在后面加一个'号,发现没有值输出,说明出现错误,我们通过注释符号可以将其注释

注释符号分别有--+,#或%23

union联合注入

http://localhost/sqli/Less-1/?id=1' union select database()--+

联合注入需要查询前面的列是多少列

group by 二分法判断默认页面数据列数量

/?id=1' union select 1,2,3--+

这里的123只是为了保证数列等于三

查询回显位

http://192.168.153.1/sqli/Less-1/index.php?id=-1' union select 1,2,3--+

2号位和3号位可以回显

http://192.168.153.1/sqli/Less-1/index.php?id=-1' union select 1,2,database()--+

① version() – 数据库版本
② user() – 数据库用户
③ database() – 当前所在数据库
④ current_user() – 当前用户名
⑤ system_user() – 系统用户名
⑥ session_user() – 连接到数据库的用户名
⑦ @@basedir – 数据库的安装目录
⑧ @@datadir – 数据库文件存放目录

SQL注入是一种常见的Web应用程序漏洞,攻击者利用该漏洞向应用程序的数据库发送恶意的SQL查询,以获取敏感信息、修改数据或执行其他恶意操作。下面是关于SQL注入的说明以及如何进行和防范:

数据库:一个存放数据的库;分 为关系型数据库和非关系型数据库

通过命令docker pull mysql:5.7下载好数据库

docker run --name sqlinjectmysql -d -p 4001:3306 -e MYSQL_ROOT_PASSWORD=123 5107333e08a8  #Mysql image id
 

运行进入数据库

1.SQL注入的原理:


2.SQL注入利用应用程序对用户输入数据的不正确处理,将恶意的SQL代码注入到应用程序的数据库查询中。
3.攻击者通过在输入字段中插入恶意代码,改变SQL查询的逻辑,从而绕过身份验证、获取敏感数据或执行未经授权的数据库操作。


4.SQL注入攻击的实施:


5.Union注入:常用于获取额外的数据库信息,攻击者可以在查询中添加UNION语句,将两个表的数据合并输出。
6.Boolean-based注入:利用逻辑判断条件,通过观察页面的返回结果来判断数据库中的信息。
7.Error-based注入:利用数据库错误信息暴露数据库结构和数据信息。
8.Blind注入:攻击者无法直接获取数据返回结果,但可以通过不同的条件检测来推断数据。


9.判断SQL语句闭合符:


10.在进行SQL注入时,攻击者通常需要找到SQL语句中可以插入恶意代码的位置。判断SQL语句闭合符(通常是单引号')是一种重要的技术。
11.通过在输入字段中插入专门设计的字符(如单引号),观察应用程序的响应是否异常,可以帮助判断SQL语句中是否存在闭合符号。如果应用程序报错,可能表示注入点存在。

在防范SQL注入方面,有一些常用的做法:

12.使用参数化查询(Prepared Statements)来过滤用户输入,避免直接拼接SQL查询。
13.对用户输入进行输入验证和过滤,确保只接受预期的数据。
14.最小化应用程序的特权级别,限制应用程序对数据库的访问权限。
15.定期更新应用程序和数据库管理系统,确保应用程序所用的软件版本已修复已知的SQL注入漏洞。

在编写和设计Web应用程序时,应该时刻警惕SQL注入等漏洞的存在,采取有效的措施来防范和减少安全风险。


http://www.kler.cn/a/447432.html

相关文章:

  • html <a>设置发送邮件链接、打电话链接 <a href=“mailto:></a> <a href=“tel:></a>
  • “宏“知识详解
  • java中带缓存的输入/输出流
  • HDR视频技术之十:MPEG 及 VCEG 的 HDR 编码优化
  • 2024_12_20_生活记录
  • 2024年华为OD机试真题-字符串分割-C++-OD统一考试(E卷)
  • 数据结构_平衡二叉树
  • 前端面试题整理-前端异步编程
  • 【Token】校验、会话技术、登录请求、拦截器【期末实训】实战项目学生和班级管理系统\Day15-后端Web实战(登录认证)\讲义
  • ip_forward函数
  • gesp(二级)(7)洛谷:B3865:[GESP202309 二级] 小杨的 X 字矩阵
  • STM32-笔记7-继电器定时开闭
  • 雅思真题短语梳理(八)
  • 常用的JVM启动参数有哪些?
  • 电子发票汇总改名,批量处理电子发票问题
  • ChatGPT接口测试用例生成的流程
  • windows安装Elasticsearch及增删改查操作
  • 基于SpringBoot+Mysql实现的在线音乐系统平台功能实现一
  • postman测试导入文件
  • 【ETCD】【实操篇(四)】etcd常见问题快问快答FAQ
  • 2.5 io_uring
  • 黑马Java面试教程_P7_常见集合_P4_HashMap
  • homebrew,gem,cocoapod 换源,以及安装依赖
  • uniapp实现手写签名,并在app中将其转为base64格式的图片
  • springboot中的AOP以及面向切面编程思想
  • Vue.js前端框架教程8:Vue消息提示ElMessage和ElMessageBox