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语句确保它绕过验证,执行成功。

相关推荐
倔强的石头_18 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤3 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区4 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1774 天前
《从零搭建NestJS项目》
数据库·typescript
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
加号35 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏5 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐5 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再5 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip