失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php中sql注入漏洞示例 sql注入漏洞修复

php中sql注入漏洞示例 sql注入漏洞修复

时间:2020-03-13 00:39:51

相关推荐

php中sql注入漏洞示例 sql注入漏洞修复

php教程|php手册

sql注入,sql注入漏洞修复

php教程-php手册

易语言单机游戏源码,vscode 定位函数,分区助手支持ubuntu吗,tomcat图标大小,sqlite快速开发app,网页插件网址,netcore的新前端框架,周公梦见身上爬虫,rss php,SEO站长联盟手游,大宗网站源码,网页中插入视频播放代码全集,响应式wap手机个人博客模板,动态页面 灵动标签,门户管理系统,帝国二次开发小说源码小说程序lzw

这篇文章主要介绍了php中sql注入漏洞示例,大家在开发中一定要注意

卡盟系统销售官网源码,vscode代码向左缩进,ubuntu 18 下载,tomcat各种配置,sqlite 数据库 导入,政府公开网站可以爬虫吗,php5.5 编译安装,武汉seo推广知识,tp网站系统,手机网页留言系统源码,广告的素材模板lzw

时时彩源码下载网站,vscode终端无响应,ubuntu新建卷,云服务安装tomcat,sqlite驱动有什么用,我的世界黑客爬虫有什么用,算命网站php源码,深圳seo 推广平台,手机网站列表页源码,web 模板设计lzw

在开发网站的时候,出于安全考虑,需要过滤从页面传递过来的字符。通常,用户可以通过以下接口调用数据库的内容:URL地址栏、登陆界面、留言板、搜索框等。这往往给骇客留下了可乘之机。轻则数据遭到泄露,重则服务器被拿下。

A、SQL注入的步骤

a) 寻找注入点(如:登录界面、留言板等)

b) 用户自己构造SQL语句(如:’ or 1=1#,后面会讲解)

c) 将sql语句发送给数据库管理系统(DBMS)

d) DBMS接收请求,并将该请求解释成机器代码指令,执行必要的存取操作

e) DBMS接受返回的结果,并处理,返回给用户

因为用户构造了特殊的SQL语句,必定返回特殊的结果(只要你的SQL语句够灵活的话)。

下面,我通过一个实例具体来演示下SQL注入

B、SQL注入实例详解(以上测试均假设服务器未开启magic_quote_gpc)

1) 前期准备工作

先来演示通过SQL注入漏洞,登入后台管理员界面

首先,创建一张试验用的数据表:

复制代码 代码如下:

CREATETABLE `users` (

`id`int(11) NOT NULL AUTO_INCREMENT,

`username`varchar(64) NOT NULL,

`password`varchar(64) NOT NULL,

`email`varchar(64) NOT NULL,

PRIMARYKEY (`id`),

UNIQUEKEY `username` (`username`)

)ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

添加一条记录用于测试:

复制代码 代码如下:

INSERTINTO users (username,password,email)

VALUES(‘MarcoFly’,md5(‘test’),’marcofly@’);

接下来,贴上登录界面的源代码:

复制代码 代码如下:

Sql注入演示

当用户点击提交按钮的时候,将会把表单数据提交给validate.php页面,validate.php页面用来判断用户输入的用户名和密码有没有都符合要求(这一步至关重要,也往往是SQL漏洞所在)

代码如下:

复制代码 代码如下:

登录验证

<?php

$conn=@mysql_connect(“localhost”,’root’,”)or die(“数据库连接失败!”);;

mysql_select_db(“injection”,$conn) or die(“您要选择的数据库不存在”);

$name=$_POST[‘username’];

$pwd=$_POST[‘password’];

$sql=”select * from users where username=’$name’ andpassword=’$pwd”;

$query=mysql_query($sql);

$arr=mysql_fetch_array($query);

if(is_array($arr)){

header(“Location:manager.php”);

}else{

echo “您的用户名或密码输入有误,请重新登录!”;

}

?>

注意到了没有,我们直接将用户提交过来的数据(用户名和密码)直接拿去执行,并没有实现进行特殊字符过滤,待会你们将明白,这是致命的。

代码分析:如果,用户名和密码都匹配成功的话,将跳转到管理员操作界面(manager.php),,不成功,则给出友好提示信息。

到这里,前期工作已经做好了,接下来将展开我们的重头戏:SQL注入

2) 构造SQL语句

填好正确的用户名(marcofly)和密码(test)后,点击提交,将会返回给我们“欢迎管理员”的界面。

因为根据我们提交的用户名和密码被合成到SQL查询语句当中之后是这样的:

复制代码 代码如下:

select * from users where username=’marcofly’ andpassword=md5(‘test’)

很明显,用户名和密码都和我们之前给出的一样,肯定能够成功登陆。但是,如果我们输入一个错误的用户名或密码呢?很明显,肯定登入不了吧。恩,正常情况下是如此,但是对于有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。

比如:在用户名输入框中输入:’ or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:

复制代码 代码如下:

如果觉得《php中sql注入漏洞示例 sql注入漏洞修复》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。