0

0

PHP漏洞全解(五)-SQL注入攻击

黄舟

黄舟

发布时间:2016-12-22 09:26:22

|

2222人浏览过

|

来源于php中文网

原创

sql注入攻击(sql injection),是攻击者在表单中提交精心构造的sql语句,改动原来的sql语句,如果web程序没有对提交的数据经过检查,那么就会造成sql注入攻击。

SQL注入攻击的一般步骤:

1、攻击者访问有SQL注入漏洞的站点,寻找注入点

2、攻击者构造注入语句,注入语句和程序中的SQL语句结合生成新的sql语句

3、新的sql语句被提交到数据库中执行 处理

立即学习PHP免费学习笔记(深入)”;

4、数据库执行了新的SQL语句,引发SQL注入攻击

69.jpg

实例

数据库

CREATE TABLE `postmessage` (  		
`id` int(11) NOT NULL auto_increment,  			
`subject` varchar(60) NOT NULL default ”,  				
`name` varchar(40) NOT NULL default ”,  					
`email` varchar(25) NOT NULL default ”,  						
`question` mediumtext NOT NULL,  							
`postdate` datetime NOT NULL default ’0000-00-00 00:00:00′,  								
PRIMARY KEY (`id`)  									
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COMMENT=’运用者的留言’ AUTO_INCREMENT=69 ;  										
	grant all privileges on ch3.* to ‘sectop’@localhost identified by ’123456′;  											
	//add.php 插入留言  												
	//list.php 留言列表  													
	//show.php 显示留言  													

														

页面 http://www.netsos.com.cn/show.php?id=71 可能存在注入点,我们来测试

http://www.netsos.com.cn/show.php?id=71 and 1=1

70.jpg

71.jpg

一次查询到记录,一次没有,我们来看看源码

//show.php 12-15行

// 执行mysql查询语句

$query = "select * from postmessage where id = ".$_GET["id"];

$result = mysql_query($query)

or die("执行ySQL查询语句失败:" . mysql_error());

参数id传递进来后,和前面的字符串结合的sql语句放入数据库执行 查询

提交 and 1=1,语句变成select * from postmessage where id = 71 and 1=1 这语句前值后值都为真,and以后也为真,返回查询到的数据

提交 and 1=2,语句变成select * from postmessage where id = 71 and 1=2 这语句前值为真,后值为假,and以后为假,查询不到任何数据

正常的SQL查询,经过我们构造的语句之后,形成了SQL注入攻击。通过这个注入点,我们还可以进一步拿到权限,比如说运用 union读取管理密码,读取数据库信息,或者用mysql的load_file,into outfile等函数进一步渗透。

防范方法

整型参数:

运用 intval函数将数据转换成整数

雷驰html商城
雷驰html商城

可以生成html页面,大大减轻服务器负担,更加增加网站在搜索引擎出现的几率增机无限级分类功能,分类设置随心所欲 增加商品VIP价格、代理价格、批发价格功能,并且可以很轻松的扩展出更多价格 针对目前网上流行的上传攻击,重新编写了上传模块的代码,杜绝上传漏洞,确保商城的安全性 优化conn.asp 加强SQL注入预防机制,让系统坚不可催 增加订单费用加收百分比功能,邮费设置更合理 后台查看修改商品增加

下载

函数原型

int intval(mixed var, int base)

var是要转换成整形的变量

base,可选,是基础数,默认是10

浮点型参数:

运用 floatval或doubleval函数分别转换单精度和双精度浮点型参数

函数原型

int floatval(mixed var)

var是要转换的变量

  int doubleval(mixed var)

var是要转换的变量

字符型参数:

运用 addslashes函数来将单引号“’”转换成“\’”,双引号“"”转换成“\"”,反斜杠“\”转换成“\\”,NULL字符加上反斜杠“\”

函数原型

string addslashes (string str)

str是要检查的字符串

那么刚才出现的代码漏洞,我们可以这样修补

// 执行mysql查询语句

$query = "select * from postmessage where id = ".intval($_GET["id"]);

$result = mysql_query($query)

or die("执行ySQL查询语句失败:" . mysql_error());

如果是字符型,先判断magic_quotes_gpc能无法 为On,当不为On的时候运用 addslashes转义特殊字符




if(get_magic_quotes_gpc())  
{  
    $var = $_GET["var"];  
}  
 else  
 {  
    $var = addslashes($_GET["var"]);  



再次测试,漏洞已经修补

以上就是PHP漏洞全解(五)-SQL注入攻击的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP安全与漏洞
PHP安全与漏洞

共12课时 | 2.1万人学习

PHP开发基础之数据库篇(PDO)
PHP开发基础之数据库篇(PDO)

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号