sql注入语句学习

说明

注入漏洞作为登顶过web十大漏洞多次的漏洞,危害性不言而喻,其中sql注入就是注入漏洞常用的手段。其形成的原因是由于web在接收传参数据时,对数据的过滤不够严格,将其带入到数据库查询中,导致用户可以通过传参一些sql语句来对数据库进行查询,修改等操作。传参的sql语句通过拼接后执行。

这边看了一个博客,结合他的办法实际验证一下拼接的方式,我们用sqli---labs来实验,先修改一下第一关的源码,显示出执行的sql语句

我们输入id=1看看执行的sql语句是什么

可以看到一个sql语句被执行了,尝试一下id=2

可以看到爆出来了一个账号密码,可以继续去尝试id=3、4、5....会发现由不同的账号密码,现在我们尝试单引号闭合

可以看到报错了,去看sql语句可以看到1后面有一个单引号落空了,在sql语句中单双引号都是要成对出现的,所以这边报错了,验证一下我们传参id=1''

没有报错,为了方便理解我们再加上一组对比,传参id

那么现在可以清楚的知道了他的拼接情况。

最后是注释和恒真假效果

复制代码
?id=1' and 1=1--+

1=1恒真也可以写成2=2或a=a等类似格式,其作用是确保注入后的 SQL 语句逻辑成立,从而验证注入点或绕过某些防护规则,可测试注入是否成功(若页面正常显示,则存在注入漏洞)。也有1=2恒假条件,可以通过这个判断是否有注入漏洞,但不能直接获取数据,需要加上其他的回显手段来获取数据。

--+这是一种闭合手段,也有其他的闭合手段例如#等等可以用于其他的注入情境,这边就不多说了,--+中--是注释符号,+在url是空格的编码被编译成空格,确保注释符号生效。添加注释符号的目的是将后面自带的语句注释掉,确保我们传参的语句语法格式正确。

整个sql语句SELECT * FROM users WHERE id='2' -- ' LIMIT 0,1如果没有加注释的话是从users表中选取id2的记录,不过只返回符合条件的第一条记录,所以我们加上注释符可以显示users表中所有id为2的记录,limit 0,1的作用是从行号0开始往下面搜索,只返还一条id=2的数据。

总之sql注入的目的是为了获取一些数据或者修改数据库的一些数据等等,是针对数据库的一种攻击手段,我们通过传参sql语句确保它绕过验证,执行成功。

相关推荐
一水鉴天1 天前
整体设计 定稿 之6 完整设计文档讨论及定稿 之1(豆包周助手)
java·前端·数据库
Voyager_41 天前
算法学习记录17——力扣“股票系列题型”
学习·算法·leetcode
正经教主1 天前
【Trae+AI】和Trae学习搭建App_2.1:第3章·手搓后端基础框架Express
人工智能·后端·学习·express
L.fountain1 天前
图像自回归生成(Auto-regressive image generation)实战学习(二)
学习·数据挖掘·回归
元气满满-樱1 天前
LNMP架构学习
android·学习·架构
倔强的石头_1 天前
金仓数据库(KingbaseES) 开发实战:常见迁移挑战与技术解析
数据库
geneculture1 天前
融智学体系图谱(精确对应版)
大数据·人工智能·学习·融智学的重要应用·信智序位
编程小白gogogo1 天前
苍穹外卖后端环境搭建-数据库环境搭建
数据库
星哥说事1 天前
基于 MySQL Monitoring and Management 的性能保障实践
数据库·mysql
秋深枫叶红1 天前
嵌入式第三十六篇——linux系统编程——线程
linux·运维·服务器·学习