SQL注入简介及攻击过程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wk.baidu.com 盲注、旁注、Timing Attack
盲注
所谓“盲注”,就是在服务器没有错误回显时完成的注入攻击。 最常见的盲注验证方法是,构造简单的条件语句,根据返回页面是否发生变化,来判断 SQL语句是否得到执行。
旁注
旁注是,在字面上解释就是-"从旁注入",利用同一主机上面不同网站的漏洞得到 webshell,从而利用主机上的程序或者是服务所暴露的用户所在的物理路径进行入侵。
Timing Attack
2011年3月27日,一个名叫TinKode的黑客在著名的安全邮件列表Full Disclosure上公布了 一些他入侵mysql.com所获得的细节。
Timing Attack
MySQL中,有一个BENCHMARK()函数,他是用于测试函数性能的。他有两个参数: BENCHMARK(count,expr)
利用BENCHMARK()函数,可以让同一个函数执行若干次,使得结果返回的时间比平时要长; 通过时间长短的变化,可以判断出注入语句是否执行成功。 例如: id=1170 UNION SELECGT IF (SUBSTRING(current,1,1)=CHAR(119), BENCHMARK(500000,ENCODE(„MSG‟,‟by 5 sec‟)),null) FROM (Select Database() as current ) as tb1;
SQL Injection
内容概要
‣ SQL注入的定义及历史 ‣ SQL注入产生的原因
‣ SQL注入的分类
‣ SQL注入的过程 ‣ SQL注入的防御
‣ SQL注入实例
什么是SQL注入
SQL注入是这样一种漏洞:应用程序在向后台数据库传递SQL查询时,如果为攻击者提 供了影响该查询的能力,就会引发SQL注入。
SQL注入产生的原因
1、输入 admin 123 SQL: SELECT id FROM user WHERE username = „admin‟ AND password = „123‟; 2、输入 „ or 1=1 -SQL: SELECT id FROM user WHERE username = „ ‟ or 1=1 -- ‟ AND password = „‟;
First Blood:在1998年的著名黑客杂志《Phrack》第54期,一位叫rfp的黑客发表了第一 篇题为“NT Web Technology Vulnerabilities”的文章。
2012年,Barclaycard的一个代表声称97%的数据泄露都是由SQL注入引起的。2011年 年尾和2012年年首,在不到一个月的时间里,超过百万的网页遭受到SQL注入攻击。 2008年见证了由于SQL注入引起的经济失调,甚至在2010年秋季,联合国官方网站也遭 受SQL注入攻击。
SQL注入的一般过程
猜:
1.判断是否能被注入
2.猜哪种数据库 3.猜表名 4.猜字段名 5.猜字段值
注入工具
Pangolin
注入工具
Sqlmap
防御SQL注入攻击
1.使用预编译的语句 2.使用存储过程 3.检查数据类型
4.使用安全函数
5.安全狗
安全狗
Thanks
SQL注入产生的原因
PHP: mysql_connect(“localhost”,”username”,”password”); mysql_select_db([“USERS”]); $query=“SELECT id FROM user WHERE username =„$_POST[“username”]‟ ”.”AND password = „$_POST[“password”]‟”; $result=mysql_query($query); if($result) header(“Location:admin.php”); else die (“Incorrect username or password,please tyr again.”);
SQL注入的分类
手工注入、工具注入 GET注入: http://localhost/product.php?id=123 POST注入: <form method="post" action="product.php"></form>
COOKIE注入: javascript:alert(document.cookie="id="+escape(“123"));
盲注
所谓“盲注”,就是在服务器没有错误回显时完成的注入攻击。 最常见的盲注验证方法是,构造简单的条件语句,根据返回页面是否发生变化,来判断 SQL语句是否得到执行。
旁注
旁注是,在字面上解释就是-"从旁注入",利用同一主机上面不同网站的漏洞得到 webshell,从而利用主机上的程序或者是服务所暴露的用户所在的物理路径进行入侵。
Timing Attack
2011年3月27日,一个名叫TinKode的黑客在著名的安全邮件列表Full Disclosure上公布了 一些他入侵mysql.com所获得的细节。
Timing Attack
MySQL中,有一个BENCHMARK()函数,他是用于测试函数性能的。他有两个参数: BENCHMARK(count,expr)
利用BENCHMARK()函数,可以让同一个函数执行若干次,使得结果返回的时间比平时要长; 通过时间长短的变化,可以判断出注入语句是否执行成功。 例如: id=1170 UNION SELECGT IF (SUBSTRING(current,1,1)=CHAR(119), BENCHMARK(500000,ENCODE(„MSG‟,‟by 5 sec‟)),null) FROM (Select Database() as current ) as tb1;
SQL Injection
内容概要
‣ SQL注入的定义及历史 ‣ SQL注入产生的原因
‣ SQL注入的分类
‣ SQL注入的过程 ‣ SQL注入的防御
‣ SQL注入实例
什么是SQL注入
SQL注入是这样一种漏洞:应用程序在向后台数据库传递SQL查询时,如果为攻击者提 供了影响该查询的能力,就会引发SQL注入。
SQL注入产生的原因
1、输入 admin 123 SQL: SELECT id FROM user WHERE username = „admin‟ AND password = „123‟; 2、输入 „ or 1=1 -SQL: SELECT id FROM user WHERE username = „ ‟ or 1=1 -- ‟ AND password = „‟;
First Blood:在1998年的著名黑客杂志《Phrack》第54期,一位叫rfp的黑客发表了第一 篇题为“NT Web Technology Vulnerabilities”的文章。
2012年,Barclaycard的一个代表声称97%的数据泄露都是由SQL注入引起的。2011年 年尾和2012年年首,在不到一个月的时间里,超过百万的网页遭受到SQL注入攻击。 2008年见证了由于SQL注入引起的经济失调,甚至在2010年秋季,联合国官方网站也遭 受SQL注入攻击。
SQL注入的一般过程
猜:
1.判断是否能被注入
2.猜哪种数据库 3.猜表名 4.猜字段名 5.猜字段值
注入工具
Pangolin
注入工具
Sqlmap
防御SQL注入攻击
1.使用预编译的语句 2.使用存储过程 3.检查数据类型
4.使用安全函数
5.安全狗
安全狗
Thanks
SQL注入产生的原因
PHP: mysql_connect(“localhost”,”username”,”password”); mysql_select_db([“USERS”]); $query=“SELECT id FROM user WHERE username =„$_POST[“username”]‟ ”.”AND password = „$_POST[“password”]‟”; $result=mysql_query($query); if($result) header(“Location:admin.php”); else die (“Incorrect username or password,please tyr again.”);
SQL注入的分类
手工注入、工具注入 GET注入: http://localhost/product.php?id=123 POST注入: <form method="post" action="product.php"></form>
COOKIE注入: javascript:alert(document.cookie="id="+escape(“123"));