SQLi Labs 指南

SQLi Labs 指南

ID:37138443

大小:801.00 KB

页数:13页

时间:2019-05-18

SQLi Labs 指南_第1页
SQLi Labs 指南_第2页
SQLi Labs 指南_第3页
SQLi Labs 指南_第4页
SQLi Labs 指南_第5页
资源描述:

《SQLi Labs 指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、校园全能高手http://www.plxsw.com/xyqngs/SQLiLabs指南简介结构化查询语言,也叫做SQL,从根本上说是一种处理数据库的编程语言。对于初学者,数据库仅仅是在客户端和服务端进行数据存储。SQL通过结构化查询,关系,面向对象编程等等来管理数据库。编程极客们总是搞出许多这样类型的软件,像MySQL,MSSQL,Oracle以及Postgresql。现在有一些程序能让我们有能力通过结构化查询来管理大型数据库。脚本小子们一定已经动手体验了类似SQL注入等这样的操作,虽然他们可能已经通过使用自动化工具例如SQL

2、Map或者SQLNinja来实施攻击,但却还不知它真正的原理。在这篇简短的教程里,我将会尽力让你对SQL注入是怎样工作的,攻击是怎样发生的以及什么是应用程序SQL漏洞有一个深入的理解。我们将要使用的实验室是SQLiLabs,它是一个可以从https://github.com/Audi-1/sqli-labs免费下载,以便我们研究学习以及编写安全的程序。所以这篇教程对于程序员和安全测试者都将是一次动手实践的机会。安装1.从https://github.com/Audi-1/sqli-labs下载源代码2.将源代码复制到Apache

3、webroot文件夹(htddocs,/var/www)3.打开sql-connections文件夹下的“db-creds.inc”文件4.修改mysql用户名和密码为你自己的5.打开浏览器,通过localhost的index.html访问文件夹6.点击setup/resetDB链接在你的mysql中创造数据库7.开始游戏!实验第一节:GET–基于错误–单引号–字符型你会看到“WelcomeDhakkan”(一个北印度俚语,通常指愚蠢的人)。SQLILabs的编码者一定是一个很幽默的人。现在我们用数字型注入可以得到一个“id”参

4、数。-> ?id=1开火!任务完成!我们得到了登陆名Dumb和密码Dump。我们在URL上添加了一个参数,并让这个参数指向第一条记录。这是便生成了一个从浏览器到数据库的表中的一个快速的查询,从而来获取“id=1”的记录。同样,你可以构造查询来得到后面的记录如2,3,4……。在后端的实际查询如下:Select * from TABLE where id=1;原文这里只是给了简单的用了id=1来正常查询了一条记录,根据原程序作者博客的说明,这里应该是有一个字符型的单引号注入,如下解释:)在第一节index.php文件的第29行中:$

5、sql="SELECT * FROM users WHERE id='$id'LIMIT 0,1";这里的$id是被单引号包裹的。通过如下的注入查询可以验证:id=1'(这样看来,原文作者上面给的实际执行的SQL语句就不对了,应为Select*fromTABLEwhereid='1';)以下两个注入可以成功执行。' or '1'='1' or 1=1 --+后者采用的注释的方法。第二课:GET–基于错误–数字型现在我们尝试通过类似于输入字符串的方法来攻击应用程序,例如“abc”和“abcd”。我们注意到在lesson2中我们收到

6、了一个从数据库返回的错误。下面我们对数字做一些篡改,将'(单引号)添加到数字中。我们又得到了一个Mysql返回的错误,提示我们语法错误。You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ LIMIT 0,1′ at line 1现在执行的查询语句如下:Select * from TABLE where id =

7、 1’ ;所以这里的奇数个单引号破坏了查询,导致抛出错误。因此我们得出的结果是,查询代码使用了整数。Select * from TABLE where id = (some integer value);现在,从开发者的视角来看,为了对这样的错误采取保护措施,我们可以注释掉剩余的查询:http://localhost/sqli-labs/Less-2/?id=1–-注意:一定要在注释符号后加空格,或者URL编码后的空格(%20),否则注释符号不会产生作用。这小节中,原作者同样使用了单引号来注入,但这并不代表着这个小节,是基于字符

8、串的,大家可以观察一个单引号注入后的出错信息,''LIMIT0,1′atline1和上面我备注图中的引号个数是不一样的,稍微分析下,便可以明白。源代码中31,32行为此处的SQL查询语句。$sql="SELECT * FROM users WHERE id=$i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。