一分钟看懂SQL注入 一分钟看懂sql注入语句
yuyutoo 2024-10-24 17:53 11 浏览 0 评论
"个性,始于不再与他人相较之时
—卡尔 拉格斐"
01注入基础概念
SQL是操作数据库的语言,日常的应用程序与数据库中进行数据交互是普遍的现象。黑客攻击渗入系统有种方式叫做SQL注入,从而获取业务数据,造成用户数据泄露或者恶意篡改数据、删除数据等,给企业带来实质的损失。
使用通俗的语言介绍SQL注入,就是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令用户发起请求时,将web页面中的URL、表单或者参数,进行修改拼装成SQL语句,传递给服务端,服务端把参数传递给SQL的执行语句,进行数据库的操作。
02注入的简单原理
是的,你没有看错,就测试过程中修改入参或者拦截接口请求修改参数。唯一的区别就是入参传递的格式有一定的要求。
下图中的WEB页面是OWASP靶机的SQL注入界面,页面功能是输入用户的ID,获取用户的信息。这个输入框是个SQL的注入点。
注:查找SQL的注入点可以利用自动探索的工具(如:工具SQLMap)。
关注公众号,了解如何探查程序中的SQL注入点
ITester测试集中营ITester软件测试者的集中营,在这里你可以学习行业知识、了解行业动向、获得简历指点、面试、收获一起成长的小伙伴,每周不定期为大家更新知识、谈谈工作与生活体会,爱测试欢迎你的加入~30篇原创内容
公众号
Submit对应的后端逻辑代码如下:
<?php
if(isset($_GET['Submit'])){
// Retrieve data
$id = $_GET['id'];
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";//着重看这行
$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
$num = mysql_numrows($result);
$i = 0;
while ($i < $num) {
$first = mysql_result($result,$i,"first_name");
$last = mysql_result($result,$i,"last_name");
echo '<pre>';
echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last;
echo '</pre>';
$i++;
}
}
?>
着重看SQL执行的这段代码和返回前端的代码,SQL执行的参数是通过前端传过来的id,id直接拼装在SQl语句中执行SQL并返回First name和Surname。
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last;
咱们改造下入参,看看执行的效果,如下图:
后端的代码收到参数后,拼接到SQL语句的时候就长这个样子
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '' or '1=1'";
分析SQL句子 where 条件后面user_id = ' ' or '1=1'。
因为1=1永远成立,so不管where后面啥条件,where条件都是永久成立。所以SELECT first_name, last_name FROM users WHERE user_id = '' or '1=1'
等价于
SELECT first_name, last_name FROM users
最后执行的结果是查询出了users表中的所有用户数据。
结论:这就是SQL注入的基本形式
03注入的危害
1、数据库信息泄漏,攻击者未经授权可以访问数据库中的数据,盗取用户的隐私以及个人信息,造成用户的信息泄露。
2、通过操作数据库对指定网页进行篡改;
3、修改数据库一些字段的值,嵌入木马链接,进行挂马攻击
4、攻击者进而可以对网页进行篡改,发布一些违法信息等。
5、服务器被远程控制安装后门。可以对数据库进行增加或删除操作
6、破坏硬盘数据,导致全系统瘫痪;
04如何避免被注入
首先,web前端的输入框要进行拦截和校验,如:正则表达式拦截标点、特殊字符等。
再次,server层的拦截和校验。(如java语言,使用JDBC进行数据操作时,使用PreparedStatement对象执行SQL操作,PreparedStatement对象对特殊字符会进行转义的操作,避免被注入sql)
之前不了解SQL注入时,认为测试在日常中是不会涉及到安全相关的工作。一直也认为没啥用,学他干啥。了解原理后,发现sql注入挺有趣的。并没用到多高端的技术,多牛的软件进行攻击破解,简单的利用代码编写的不严谨,同时利用SQL语言自有的功能,通过sql拼接的形式进行传递,尝试与数据库建立连接。只要连接上你的库,那你就危险了。轻则盗取你点数据,重则给你搞点破坏,让你无法运营。同时让我更加全面了解到,接口请求的参数中含有特殊字符,不仅对程序处理有影响,条件允许的情况下也会对数据产生危害。
相关推荐
- 当 Linux 根分区 (/) 已满时如何释放空间?
-
根分区(/)是Linux文件系统的核心,包含操作系统核心文件、配置文件、日志文件、缓存和用户数据等。当根分区满载时,系统可能出现无法写入新文件、应用程序崩溃甚至无法启动的情况。常见原因包括:...
- 玩转 Linux 之:磁盘分区、挂载知多少?
-
今天来聊聊linux下磁盘分区、挂载的问题,篇幅所限,不会聊的太底层,纯当科普!!1、Linux分区简介1.1主分区vs扩展分区硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两...
- Linux 文件搜索神器 find 实战详解,建议收藏
-
在Linux系统使用中,作为一个管理员,我希望能查找系统中所有的大小超过200M文件,查看近7天系统中哪些文件被修改过,找出所有子目录中的可执行文件,这些任务需求...
- Linux 操作系统磁盘操作(linux 磁盘命令)
-
一、文档介绍本文档描述Linux操作系统下多种场景下的磁盘操作情况。二、名词解释...
- Win10新版19603推送:一键清理磁盘空间、首次集成Linux文件管理器
-
继上周四的Build19592后,微软今晨面向快速通道的Insider会员推送Windows10新预览版,操作系统版本号Build19603。除了一些常规修复,本次更新还带了不少新功能,一起来了...
- Android 16允许Linux终端使用手机全部存储空间
-
IT之家4月20日消息,谷歌Pixel手机正朝着成为强大便携式计算设备的目标迈进。2025年3月的更新中,Linux终端应用的推出为这一转变奠定了重要基础。该应用允许兼容的安卓设备...
- Linux 系统管理大容量磁盘(2TB+)操作指南
-
对于容量超过2TB的磁盘,传统MBR分区表的32位寻址机制存在限制(最大支持2.2TB)。需采用GPT(GUIDPartitionTable)分区方案,其支持64位寻址,理论上限为9.4ZB(9....
- Linux 服务器上查看磁盘类型的方法
-
方法1:使用lsblk命令lsblk输出说明:TYPE列显示设备类型,如disk(物理磁盘)、part(分区)、rom(只读存储)等。...
- ESXI7虚机上的Ubuntu Linux 22.04 LVM空间扩容操作记录
-
本人在实际的使用中经常遇到Vmware上安装的Linux虚机的LVM扩容情况,最终实现lv的扩容,大多数情况因为虚机都是有备用或者可停机的情况,一般情况下通过添加一块物理盘再加入vg,然后扩容lv来实...
- 5.4K Star很容易!Windows读取Linux磁盘格式工具
-
[开源日记],分享10k+Star的优质开源项目...
- Linux 文件系统监控:用脚本自动化磁盘空间管理
-
在Linux系统中,文件系统监控是一项非常重要的任务,它可以帮助我们及时发现磁盘空间不足的问题,避免因磁盘满而导致的系统服务不可用。通过编写脚本自动化磁盘空间管理,我们可以更加高效地处理这一问题。下面...
- Linux磁盘管理LVM实战(linux实验磁盘管理)
-
LVM(逻辑卷管理器,LogicalVolumeManager)是一种在Linux系统中用于灵活管理磁盘空间的技术,通过将物理磁盘抽象为逻辑卷,实现动态调整存储容量、跨磁盘扩展等功能。本章节...
- Linux查看文件大小:`ls`和`du`为何结果不同?一文讲透原理!
-
Linux查看文件大小:ls和du为何结果不同?一文讲透原理!在Linux运维中,查看文件大小是日常高频操作。但你是否遇到过以下困惑?...
- 使用 df 命令检查服务器磁盘满了,但用 du 命令发现实际小于磁盘容量
-
在Linux系统中,管理员或开发者经常会遇到一个令人困惑的问题:使用...
- Linux磁盘爆满紧急救援指南:5步清理释放50GB+小白也能轻松搞定
-
“服务器卡死?网站崩溃?当Linux系统弹出‘Nospaceleft’的红色警报,别慌!本文手把手教你从‘删库到跑路’进阶为‘磁盘清理大师’,5个关键步骤+30条救命命令,快速释放磁盘空间,拯救你...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)