
随着B/S模式应用开发的发展,使用该模式编写程序的程序员越来越来越多,但是由于程序员的水平参差不齐,相当大一部分应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想要知的数据,这个就是所谓的SQLinjection,即sql注入式攻击。
脚本注入攻击者把SQL命令插入到WEB表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,在某些表单中,用户输入的内容直接用来构造动态的SQL命令,或作为存储过程的输入参数,从而获取想得到的密码或其它服务器上的资料。
注入原理:
网站的配备内容等,一旦里面的数据被某人获得或者是被修改,那么那个人就可能获得整个网站的控制权。至于怎么获得这些数据,那些MSSQL弱口令的就不说,剩下的最有可能就是利用注入漏洞。
当用户在网站外部提交一个参数进入数据库处理,然后把处理后的结果发给用户,这个是动态网页最常见的,但是这个参数一旦没有被过滤,使得我们自己构造的sql语句也可以和参数一起参与数据库 *** 作的,那么SQL注入漏洞就会产生
一个网站上存在外地数据提交是很正常的,一般都是用参数接受(request),然后再进行处理,而涉及于数据库 *** 作的却占了很大的一部分。例如下面的例子
这个地址包含了参数1,以及传递该参数的变量cs,意思就是,的文件夹里有一个1.asp文件,1.asp文件内部存在cs变量,作用就是接受有外部提交的一个参数:1,也可以是其他的,那么在1.ASP这个文件里的相关代码一般
就是这样
本帖最后由 myzuzong 于 2012-4-28 10:00 编辑只要搞清楚什么是“注入”,和注入其它进程的方式,就知道怎么防御了。
所谓注入,就是程序把自己的代码放到别的进程的地址空间去执行,来对这个进程进行 *** 作,获得、修改进程的数据等。把自己的代码放入别的进程的地址空间,可以让别的进程加载自己的DLL,也可以直接在别的进程地址空间创建远程线程。
进程注入的方法主要有:(1)修改HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs,全局注入DLL到所有使用User32.dll的进程;(2)消息钩子;(3)CreateRemoteThread;(4)Fake DLL。
防(1),用RD;防(2)和(3),在AD里对应的是钩子和访问内存;防(4)一定程度上可以用FD。白+黑也是(4),但是没啥好办法防(无限d窗流就不要说了)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)