• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

常见SQL注入的方法

mysql 搞代码 4年前 (2022-01-09) 10次浏览 已收录 0个评论

常见SQL注入的方法

WEB安全之SQL注入

引言:

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

一、SQL注入步骤

a)寻找注入点,构造特殊的语句

传入SQL语句可控参数分为两类
1. 数字类型,参数不用被引号括起来,如?id=1
2. 其他类型,参数要被引号扩起来,如?name="phone"

b)用户构造SQL语句(如:'or 1=1#;admin'#(这个注入又称PHP的万能密码,是已知用户名的情况下,可绕过输入密码)以后再做解释)

c)将SQL语句发送给DBMS数据库

d)DBMS收到返回的结果,并将该请求解释成机器代码指令,执行必要得到操作

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

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

下面,我通过一个实例具体来演示下SQL注入
二、SQL注入实例详解(以上测试均假设服务器未开启magic_quote_gpc)

1) 前期准备工作
先来演示通过SQL注入漏洞,登入后台管理员界面
首先,创建一张试验用的数据表:

CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(64) NOT NULL,`password` varchar(64) NOT NULL,`email` varchar(64) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`)) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

添加一条记录用于测试:

INSERT INTO users (username,password,email)VALUES('MarcoFly',md5('test'),'[email protected]');

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

<html> <head>   <title&<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码网@</strong>gt;Sql注入演示</title>   <meta http-equiv="content-type" content="text/html;charset=utf-8" />  </head>  <body>   <form action="validate.php" method="post">    <fieldset>     <legend>Sql注入演示</legend>     <table>      <tbody>      <tr>        <td>用户名:</td>       <td><input type="text" name="username" /></td>       </tr>       <tr>        <td>密 码:</td>       <td><input type="text" name="password" /></td>       </tr>       <tr>        <td><input type="submit" value="提交" /></td>       <td><input type="reset" value="重置" /></td>       </tr>      </tbody>    </table>    </fieldset>   </form>    </body></html>

附上效果图:

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

!                                         <!--前台和后台对接--><html><head><title>登录验证</title><meta http-equiv="content-type" content="text/html;charset=utf-8"></head><body><?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' and password='$pwd'";$query=mysql_query($sql);$arr=mysql_fetch_array($query);if(is_array($arr)){header("Location:manager.php");}else{echo "您的用户名或密码输入有误,<a href=\"Login.php\">请重新登录!</a>";}?></body></html>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:常见SQL注入的方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址