做为网络开发者的你对这种黑客行为恨之入骨,当然也有必要了解一下SQL注入这种功能方式的原理并学会如何通过代码来保护自己的网站数据库。今天就通过PHP和MySQL数据库为例,分享一下我所了解的SQL注入攻击和一些简单的防范措施和一些如何避免SQL注入攻击的建议。
简单来说,SQL注入是使用代码漏洞来获取网站或应用程序后台的SQL数据库中的数据,进而可以取得数据库的访问权限。比如,黑客可以利用网站代码的漏洞,使用SQL注入的方式取得一个公司网站后台数据库里所有的数据信息。拿到数据库管理员登录用户名和密码后黑客可以自由修改数据库中的内容甚至删除该数据库。SQL注入也可以用来检验一个网站或应用的安全性。SQL注入的方式有很多种,但本文将只讨论最基本的原理,我们将以PHP和MySQL为例。本文的例子很简单,如果你使用其它语言理解起来也不会有难度,重点关注SQL命令即可。
一个简单的SQL注入攻击案例
假如我们有一个公司网站,在网站的后台数据库中保存了所有的客户数据等重要信息。假如网站登录页面的代码中有这样一条命令来读取用户信息。
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
$_GET['username']
"
'
AND
`password`=
'
"
$_GET['password']
"
'
";>现在有一个黑客想攻击你的数据库,他会尝试在此登录页面的用户名的输入框中输入以下代码:
'
;
SHOW
TABLES;
点击登陆键,这个页面就会显示出数据库中的所有表。如果他现在使用下面这行命令:
';
DROP
TABLE
[table
name];
这样他就把一张表删除了!
防范SQL注入
-
使用mysql_real_escape_string()函数
在数据库 *** 作的代码中用这个函数mysql_real_escape_string()可以将代码中特殊字符过滤掉,如引号等。如下例:
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
mysql_real_escape_string(
$_GET['username']
)
"
'
AND
`password`=
'
"
mysql_real_escape_string(
$_GET['password']
)
"
'
";>防范SQL注入
-
使用mysql_query()函数
mysql_query()的特别是它将只执行SQL代码的第一条,而后面的并不会执行。回想在最前面的例子中,黑客通过代码来例后台执行了多条SQL命令,显示出了所有表的名称。所以mysql_query()函数可以取到进一步保护的作用。我们进一步演化刚才的代码就得到了下面的代码:
//connection
$database
=
mysql_connect("localhost",
"username","password");
//db
selection
$q
=
mysql_query("SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
mysql_real_escape_string(
$_GET['username']
)
"
'
AND
`password`=
'
"
mysql_real_escape_string(
$_GET['password']
)
"
'
",
$database);>除此之外,我们还可以在PHP代码中判断输入值的长度,或者专门用一个函数来检查输入的值。所以在接受用户输入值的地方一定要做好输入内容的过滤和检查。当然学习和了解最新的SQL注入方式也非常重要,这样才能做到有目的的防范。如果使用的是平台式的网站系统如Wordpress,要注意及时打上官方的补丁或升级到新的版本。
1、要嘛你是黑客,侵入人家的服务器,拷走人家的源代码(真正的黑客,人家不屑)。
2、要嘛你找网站的管理员索取或购买。
3、如果都做不到,就自己动手写,通篇研究/使用别人的代码,会很晕的!
2:旁注网站的入侵探测…(在入侵指定网站没有效果时的另外入侵方式)
3:批量网站的入侵探测。
指定网站入侵和旁注网站入侵的方式大致一样,方式分大约为以下:
1:万能密码,(如:‘or’=’or’)
2:上传漏洞
3:注入漏洞4:弱口令5:0DAY (0day在网络安全界通常是指没有补丁的漏洞利用程序)
6:某些目录可利用的程序。
当你入侵指定网站的时候没有任何可利用的漏洞程序,你可以选择旁注(就是同在一个服务器上的网站)入侵来达到你的目的!最后通过拿到同服务器网站的webshell来进行服务器提权达到入侵指定网站的目标。
关于wenshell提权这个技术概念是非常之麻烦,提权方式是靠前辈提出的方法与自己的思维变换去实现的,目前网络上流传的提权方式多大40多种。常用的有:360提权,CMD提权,SQL提权,Serv-U提权,社会工程学等。
首先介绍下什么样的站点可以入侵:必须是动态的网站
比如
asp
php
jsp
这种形式的站点
后缀为htm的站点劝大家还是不要入侵了吧(入侵几率几乎为0)
入侵介绍:
1。上传漏洞
2。暴库
3。注入
4。旁注
5。COOKIE诈骗
1:上传漏洞,这个漏洞在DVBBS60时代被黑客们利用的最为猖獗,利用上传漏洞可以直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。
怎样利用:在网站的地址栏中网址后加上/upfileasp如果显示
上传格式不正确[重新上传]
这样的字样8成就是有长传漏洞了找个可以上传的工具直接可以得到WEBSHELL
工具介绍:上传工具
老兵的上传工具
DOMAIN35
这两个软件都可以达到上传的目的
用NC也可以提交
WEBSHELL是什么:WEBSHELL在上节课简单的介绍了下,许多人都不理解,这里就详细讲下,其实WEBSHELL并不什么深奥的东西,是个WEB的权限,可以管理WEB,修改主内容等权限,但是并没有什么特别高的权限,(这个看管理员的设置了)一般修改别人主大多都需要这个权限,接触过WEB木马的朋友可能知道(比如老兵的站长助手就是WEB木马
海阳2006也是
WEB木马)我们上传漏洞最终传的就是这个东西,有时碰到权限设置不好的服务器可以通过WEBSHELL得到最高权限。
2。暴库:这个漏洞现在很少见了,但是还有许多站点有这个漏洞可以利用,暴库就是提交字符得到数据库文件,得到了数据库文件我们就直接有了站点的前台或者后台的权限了。
暴库方法:比如一个站的地址为
>
代码如下:
<php
$handle = fopen (">
以上就是关于PHP代码网站如何防范SQL注入漏洞攻击建议分享全部的内容,包括:PHP代码网站如何防范SQL注入漏洞攻击建议分享、怎么拿下php站、入侵网站总共有几种方法还有手动SQL注入需要学习哪些知识等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)