因为之前对HTTP和Java都不熟悉,所以想要一开始就使用实验室师兄给的在线平台练习有点困难。好在我在一本参考书上看到推荐使用BurpSuite的在线实验室,又因为前段时间我恰好学习了Burp的网络扫描相关,于是我尝试着利用这个软件进一步的学习WEB的网络安全。后来发现上面的练习难度适中,并且既有原理说明,又有操作指导,强烈推荐像我这样的新手入门使用。
这周首先学习的是SQL注入攻击的第一部分。实验室地址

首先,Burpsuite上给出的SQL的定义:

SQL injection is a web security vulnerability that allows an attacker to interfere with the queries that an application makes to its database. It generally allows an attacker to view data that they are not normally able to retrieve. This might include data belonging to other users, or any other data that the application itself is able to access. In many cases, an attacker can modify or delete this data, causing persistent changes to the application’s content or behavior.
In some situations, an attacker can escalate an SQL injection attack to compromise the underlying server or other back-end infrastructure, or perform a denial-of-service attack.


一言以蔽之SQL注入攻击就是通过干扰应用程序对数据库的正常查询,从而非法获得、篡改、删除、破坏用户的数据或是服务器设备。

  1. 检索隐藏数据

有的时候,通过浏览器发出get命令查询数据库,往往后面会着一些条件作为返回内容的限制。比如我们在购物网站查询某一类商品时,浏览器会想服务器发出相应的查询请求,如我们这次使用的gifis。

但是我们利用SQL的查询命令进行'--来进行攻击。'表示的是字符串变量,而--则是SQL中的注释指示符,它意味着它后面的查询语句都将被编译器解释为注释,不被执行。

因此我们可以在原来的请求语句中添加'or+2=2--其中or表示的是或命令,+表示的是连接符,2=2始终是成立的,所以or语句始终成立,所以修改后的查询将返回所有项目。

最终结果

  1. 颠覆应用程序逻辑
    同样我们还可以通过注释语句--对用户的登陆操作信息进行攻击。

    正常情况下,用户输入的账户和密码会被送往数据库,检查是否匹配:SELECT * FROM users WHERE username ='lili’AND password =‘123456’。但是如果我们使用了'administrator--那么SQL语句后半部分password的查询部分将会被注释掉,此时查询将返回管理员的账户登陆,并将攻击者记录为管理员。


    返回结果如下:

    3.从其他数据库中检索出数据
    当应用程序的响应会返回SQL查询的结果是,攻击者就可以利用SQL注入攻击从数据库的其他表中检索数据。常见的这类攻击有SQL注入UNION攻击。
    UNION命令可以在原命令上追加一个或是多个select命令并将结果随原命令一同返回。
    例如:

SELECT a,b FROM table1 UNION SELECT c,d FROM table2
原命令是对table1的查询,使用UNION之后可以在原命令的基础之上追加对table2的查询,并且将两个结果一同返回。

所以很明显,要使得UNION命令成功生效,我们需要注意两点,一是每个查询必须要返回数量相同的列,而是反馈结果中每列数据的数据结构类型应该是相互兼容的。

接下来我们就需要一一验证。

确定SQL注意UNION攻击所需要的列数

常见的有两种命令:

'order+by+1
'order+by+2
.....

order命令是递增的指定索引项。当指定的列索引项超过了结果集中实际的列数时,数据库就将返回并报错,此时的最大的未报错的值,即为UNION返回值得列数。


例如,在该选项中’order+by+4--时第一次出现报错,说明列的数目为3。
第二种方法式使用‘UNION+select,null--命令。这种方法的使用方式恰好与第一种相反。当空值的数量与实际的列数不匹配时,数据库将返回错误,此时我们需要将null值加一,然后继续查询’UNION+select+null,null--
返回依然报错:

继续输入:'union+select+null,null,null--

返回值成功:

说明正确的返回列数是3,与第一种的方法一致。

接下来是关于返回数据类型的确定,我们下周再学习。

使用BurpSuite实验室练习SQL注入攻击相关推荐

  1. 基于pikachu漏洞平台的 --SQL注入攻击学习与总结

    SQL注入攻击 基础知识 常见注释符号 使用示例 pikachu 漏洞联系平台 -- SQL注入 SQL注入攻击流程 注入点类型 数字型注入(POST) 字符型注入(GET) 搜索型注入 XX型注入 ...

  2. 皮卡丘靶场的搭建以及SQL注入攻击(加强版)

    嚣张的小帅分享自己操作的流程给大家,不吝赐教!点赞你要亮,关注干得漂亮! 一 环境准备 1 搭建环境 Windows10及以上版本 phpstudy(小皮) pikachu(皮卡丘靶场) JDK(ja ...

  3. BurpSuit官方实验室之SQL注入

    BurpSuit官方实验室之SQL注入 这是BurpSuit官方的实验室靶场,以下将记录个人SQL注入共17个Lab的通关过程 Web Security Academy: Free Online Tr ...

  4. PHP的SQL注入攻击的技术实现以及预防措施

    最近在折腾 PHP + MYSQL 的编程.了解了一些 PHP SQL 注入攻击的知识,总结一下经验.在我看来,引发 SQL 注入攻击的主要原因,是因为以下两点原因: 1. php 配置文件 php. ...

  5. SQL Server安全-加密术和SQL注入攻击

    SQL Server上的加密术 SQL Server上内置了加密术用来保护各种类型的敏感数据.在很多时候,这个加密术对于你来说是完全透明的:当数据被存储时候被加密,它们被使用的时候就会自动加密.在其他 ...

  6. ADO.NET笔记——带参数的查询防止SQL注入攻击

    相关知识: 把单引号替换成两个单引号,虽然能起到一定的防止SQL注入攻击的作用,但是更为有效的办法是把要拼接的内容做成"参数" SQLCommand支持带参数的查询,也就是说,可以 ...

  7. 防止sql注入攻击的方法总结

    SQL注入是一种利用未过滤/未审核用户输入的攻击方法("缓存溢出"和这个不同),意思就是让应用运行本不应该运行的SQL代码.通过把SQL命令插入到Web表单递交或输入域名或页面请求 ...

  8. 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击...

    第三百九十二节,Django+Xadmin打造上线标准的在线教育平台-sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...

  9. ASP.NET 4学习笔记(1) SQL注入攻击及解决方案.

    一, 定义:所谓SQL注入攻击是应用程序开发人员未预期地把SQL代码传入到应用程序的过程,只有那些直接使用用户提供的值构造SQL语句的应用程序才会受影响. 例如原SQL代码为: select Orde ...

最新文章

  1. IIS5.1/IIS6.0 整合Tomcat6.0.14完全版
  2. arm单片机中函数参数的传递
  3. fwr171改无线服务器,迅捷(Fast)FWR171无线AP模式设置
  4. SAP收发存报表程序
  5. 删除github上某个release/tag
  6. 分支结构程序案例c语言,C语言学习之三——分支结构程序
  7. python语言变量随时声明_2. Go语言五种变量创建的方法
  8. linux内核module_init,Linux内核模块中module_init和init_module有什么区别?
  9. Linux内核中makefile有什么作用?深入解析makefile工作过程和原理
  10. seq2seq模型_使用Tensorflow搭建一个简单的Seq2Seq翻译模型
  11. Weui 结合 xmlHttpRequest 上传图片
  12. 小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
  13. java 财付通支付_微信微信支付已拿下51%的份额,远超支付宝的41%
  14. windows远程控制服务器
  15. USACO 2021 January Contest, BronzeProblem 2. Even More Odd Photos题解
  16. 盗版WIN7的管理员权限
  17. 艾默生首席执行官范大为退休;液化空气将新建生产装置为京东方供应气体 | 美通企业日报...
  18. 公众号600篇文章分类和索引
  19. python获取数组中最多的元素(用max函数)
  20. 迅为IMX6ULL开发板Linux学习教程

热门文章

  1. 关于解决NAT 类型显示“Teredo 无法获得资格”的一个案例
  2. 嵌入式RTOS的 任务栈 和 系统栈
  3. 集合,ArrayList的运用、 Add()、AddRange()、Clear()、 IndexOf()等
  4. MATLAB画路径图(带结点,不同颜色的路径)
  5. perl中正则匹配中文字符
  6. strace命令解析
  7. 操作系统期末复习-第一章:操作系统概论
  8. 在MMClassification中使用Swin-Transformer开始一个分类任务
  9. 复杂网络分析总结[Network Analysis]
  10. 目标检测中多尺度:特征金字塔FPN_Feature Pyramid Networks for Object Detection