sql注入攻击实例讲解

实时应用开发

5人已加入

描述

  “SQL注入”是一种利用未过滤/未审核用户输入的攻击方法(“缓存溢出”和这个不同),意思就是让应用运行本不应该运行的SQL代码。如果应用毫无防备地创建了SQL字符串并且运行了它们,就会造成一些出人意料的结果。

  具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1] 比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

  SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

  可能导致SQL注入的隐患

  1、 随着B/S(浏览器/服务器)模式应用开发的发展,从事动态网页以及脚本编程的程序员越来越多,在一段不长的时间里,新手往往就已经能够编出看来比较完美的动态网站,在功能上,很容易就能实现。但是因为程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候存在漏洞,给攻击者提供便利条件。

  2、系统对用户输入的参数不进行检查和过滤,没有对用户输入数据的合法性进行判断,或者程序中本身的变量处理不当,使应用程序存在安全隐患。

  3、因为SQL注入主要是针对web应用程序提交数据库查询请求的攻击,与正常的用户访问没有什么区别,所以能够轻易的绕过防火墙直接访问数据库,甚至能够获得数据库所在的服务器的访问权限。

  SQL注入实例演示

  利用Pangolin工具实现针对MS SQL环境的SQL注入攻击。

  1. 在本地主机上通过Internet Explorer等Web浏览器访问目标Web服务器(即Windows Server A,IP地址为192.168.1.103)的主页。

 SQL

  2. 在访问的网页URL地址后加上一个单引号(‘)继续访问, 即http://192.168.1.103/news.aspx?id=1’,如下图所示:

  SQL

  从图中可以看到数据库连接出错消息中可以看到如下错误消息“字符串 ‘’ 之前有未闭合的引号。”,也就是单引号没有闭合的意思。

  3. 继续手动测试SQL注入是否存在:访问如下网页URL地址: http://192.168.1.103/news.aspx?id=1 and 1=1

  SQL

  其中访问第一个网页地址的情况与正常情况相同,而访问第二个网页地址则一片空白,即新闻文档不存在的意思。

  4. 进入实验工具目录,双击运行Pangolin程序(pangolin.exe),在注入地址“URL”输入框中输入http://192.168.1.103/news.aspx?id=1

  SQL

  然后点击工具栏中的开始按钮开始自动检测SQL注入漏洞情况。从检测结果中可以看到,该网站的SQL注入类型为“Integer(字符型)”,后台数据库类型为“MS SQL with Error”。 5. 在主界面中的“Information”选项卡中,点击“Select All”按钮选择所有信息类型,包括下面所列举的“Version”、“Db Name”、“Server Name”等,然后点击“Go”按钮开始探测目标服务器的基本信息。

 SQL

  6. 在主界面中选择“Data”选项卡,点击左下方的“Tables”按钮来枚举目标当前数据库中存在的所有数据表的名称。

  7. 点击选择数据库中的“admin”表,然后点击下方的“Columns”按钮来枚举该数据表中所有的数据列名。展开“admin”表前面的“+”号可以查看详细的列名信息。

  8. 勾选感兴趣的数据表以及其中的数据列,如admin表中的id、username以及password列,然后点击右侧的“Datas”按钮则可以枚举该表中的所有数据项内容。在这里,我们还可以通过自定义查询条件来自定义查询所感兴趣的数据内容,默认为“1=1”表示所有的数据内容。

  SQL

  9. 在主界面中选择“Command”选项卡,然后在“Command”输入框中输入要在目标服务器上执行的系统命令,比如“ipconfig”等;在“Type”下拉框中选择执行命令的技术方法,默认为“xp_cmdshell”,其他可选的主要方法有“sp_oa***”等。最后点击右侧的“Execute”按钮执行命令,可在下方的黑色文本框中看到执行结果。

  10. 选择“type”为“sp_oa***”,尝试执行添加用户的命令操作。

 SQL

  11. 在主界面中选择“Dir Tree”选项卡,然后点击“Drivers”按钮列举目标服务器上的所有驱动器。双击“C:\”节点可以进一步展开获得C:\根目录下的所有子目录和文件,依次可以获得磁盘上的目录结构。

  12. 双击某一文件,可以在右侧的文本框中显示文件的详细内容。

  13. 仔细查看“C:\inetpub\wwwroot”目录中的网站文件,获得连接后台MS SQL数据库的账号和密码。

  SQL

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • SQL

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分