首先什么是SQL注入攻击

SQL注入式攻击技术,一般针对基于Web平台的应用程序.造成SQL注入攻击漏洞的原因,是由于程序员在编写Web程序时,没有对浏览器端提交的参数进行严格的过滤和判断。用户可以修改构造参数,提交SQL查询语句,并传递至服务器端,从而获取想要的敏感信息,甚至执行危险的代码或系统命令。

SQL注入的原理

SQL注入攻击原理:程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会将程序命令当作用户输入的数据提交给Web程序,以发号施令,为所欲为(注:注入最终是数据库,与脚本、平台无关)。
                           总之一句话:sql注入产生的原因是接受相关参数未经处理直接带入数据库查询操作

                                            SQL注入攻击的类型

1.数字型注入                 2.字符型注入            3.搜索型注入

                                            怎样手工探测注入点

1.“单引号”法:第一种检测SQL注入漏洞是否存在的方法是“单引号”法。方法很简单,直接在浏览器地址栏中的网址链接后加上一个单引号,如果页面不能正常显示,浏览器返回一些异常信息,则说明该链接可能存在注入漏洞。

2.  and  1=1和1=2法

很多时候检测提交包含引号的链接时,会提示非法字符,或者直接不返回任何信息,但这并不等于不存在SQL注入漏洞。此时可使用经典的“1=1和1=2”法进行检测。方法很简单,就是直接在链接地址后分别加上and 1=1和and 1=2进行提交,如果返回不同的页面,那么说明存在SQL注入漏洞。

                                                Boolian(布尔型)盲注

在我们的注入语句被带入数据库查询但却什么都没有返回的情况我们该怎么办?例如应用程序就会返回一个“通用的”的页面,或者重定向一个通用页面(可能为网站首页)。这时,我们之前学习的SQL注入办法就无法使用了。

盲注,即在SQL注入过程中,SQL语句执行选择后,选择的数据不能回显到前端,我们需要使用一些特殊的方法进行判断或尝试,这个过程称为盲注。

SQL盲注分为两大类:基于布尔型SQL盲注、基于时间型SQL盲注、

1.布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根据    你的注入信息返回Ture跟Fales,也就没有了之前的报错信息。
2.时间盲注 界面返回值只有一种,true 无论输入任何值 返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确

SQL注入工具

推荐三款我自己经常使用的sql注入工具:  1.sqlmap   2.Pangolin(穿山甲)  3.havij pro(自动化注入工具)

1.极力推荐使用sqlmap(还需要安装python) 优点:只要你会使用sqlmap就不需要掌握其他的注入工具了  缺点:sqlmap的命令语句很多很难记住

这里有我常使用的一些sqlmap的语句:  sqlmap.py -u http://192.168.1.4/sqlserver/1.aspx?xxser=1 ( -u 是get注入)

post注入 sqlmap.py -r burpsuite抓包.txt(对post页面进行抓包,放在txt文件里再去跑)

指定表单注入 sqlmap.py -u URL –data“username=a&password=a”

sqlmap自动填写表单注入:sqlmap.py -u URL –forms  --dbs  //默认情况系sqlmap会自动的探测web应用后端的数据库类型:MySQL、Oracle、PostgreSQL、MicrosoftSQL Server、Microsoft Access、SQLite、Firebird、Sybase、SAPMaxDB、DB2

sqlmap cookies注入:sqlmap.py -u 注入点URL --cookie "id=xx" --level 3(默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。可以通过burpsuite等工具获取当前的cookie值,然后进行注入)

2.Pangolin(穿山甲)这款工具前几年感觉还可以,现在确实随着waf的牛逼,这东西基本上用处不大,优点:中文页面小白专属  缺点:工具过于鸡肋

3.havij pro(自动化注入工具)  优点:工具功能强大  缺点:英文界面 还是付费的(有破解)

这是我经常使用的sql注入工具,具体用法和下载可以百度或者加我qq:1721854283

手工进行sql注入

一般如果对方网站有waf拦截的话基本上是使用不了工具的,这是我们就要手工注入,上面已经提到了sql注入点一定是在与数据库有交互的地方,可以再这些网站参数后面加入单引号或者and 1=1 1=2  来进行查看返回的报错信息从而去判断注入点

探测出sql注入点后,利用order by猜解字段数目语句查询:

order by 1

order by 2

...

order by n-1

order by n

如果n-1时返回正常,n时返回错误,那么说明字段数目为n

得到字段长度后,就可利用union select查询获得字段内容了。

and 1=2 union select1, 2, 3...., n from 表名

执行上面的查询时,在页面中会返回数字,修改查询语句中的数字为字段名,例如提交如下代码。

and 1=2 union select1, 字段1, 字段2...., n from 表名

在页面中就会返回字段内容,不必一个一个进行猜解了

实例语句:http://192.168.1.55:901/news_view.asp?id=14and 1=2 union select 1,user_name,password,4,5,6,7 from administrator

在页面返回信息中,立即获得了user_name和password字段的值(图16),比前面的方法快速高效多了

得到帐号密码后去后台登陆,从而上传webshell,

SQL注入防御的方法

网络层面:1.通过WAF设备启用防SQL Inject注入策略(或类似防护系统)2.云端防护(360网站卫士,阿里云盾等)

代码层面:1.对输入进行严格的转义和过滤(过滤原则:对用户输入的数据进行判断,用黑名单,或者白名单的方式验证,或者替换危险字符)

2.使用参数化(Parameterized)

原理:使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行

简单的说: 参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑

但是再好的防御也会被攻破,要是网站永远安全那我们渗透测试工程师岂不是失业了吗,本文只是大概讲述了sql注入的简单流程适合小白观看,大佬一般也不看这种东西,还有一些waf的绕过之类的以后在讲解,欢迎共同探讨或者咨询QQ:1721854283

正在学习python的李治龙

浅谈SQL注入攻击与防御(适用于小白观看)相关推荐

  1. 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用

    浅谈XXE漏洞攻击与防御 from:https://thief.one/2017/06/20/1/ XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点 ...

  2. 浅谈SQL注入风险 - 一个Login拿下Server(转)

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:"老师你这SQL有注 ...

  3. 浅谈SQL注入,XSS攻击

    作为计算机小白,一直都认为黑客很牛逼所以简单的了解一下这反面的知识--信息安全 黑客是个英译词,译作Hacker.黑客攻击或者黑计算机的方式多种多样,主要分为两种: (1)非破坏性的攻击:一般是为了扰 ...

  4. SQL注入攻击及防御 手动注入+sqlmap自动化注入实战(网络安全学习12)

    CONTENTS 1 项目实验环境 2 SQL注入概述 2.1 SQL注入简介 2.2 SQL注入的危害 3 SQL基础回顾 3.1 联合查询union 3.2 information_schema数 ...

  5. 浅谈SQL注入漏洞原理及利用方式

    1.SQL注入 原理: 在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的恶意"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行.漏洞产生于脚 ...

  6. 渗透测试笔记(三)——SQL注入攻击及防御(1)

    SQL注入危害 程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 1.对于Web应用程序而言,用户核心数据存储在数据库中,例如MySQL.SQL Server.Oracle等: 2.通过SQL ...

  7. 《Web安全渗透全套教程(40集)》学习笔记 | SQL注入攻击及防御

    学习视频来源:B站<Web安全渗透全套教程(40集)> 个人在学习的同时,也验证了视频中的实验部分,现将授课笔记和实验笔记整理下来. SQL注入危害 SQL基础回顾 连接数据库 查看数据库 ...

  8. 浅谈javascript注入攻击

    目录 前言 介绍 传统页面的服务端渲染 为什么说"传统" 前后端分离 除了这种之外,还有其他的注入的可能 优化 延展 最后 前言 记录一次防止js注入的项目经历,起因,项目在测试过 ...

  9. sql注入攻击与防御第二版读书笔记二——SQL盲注利用

    寻找并确认SQL盲注 强制产生通用错误 注入带副作用的查询 如 mssql waitfor delay '0:0:5' mysql sleep() 拆分与平衡 5 -> 7-2 常见SQL盲注场 ...

  10. 浅谈二层交换安全攻击与防御

    1) mac地址洪泛攻击: 因为mac地址表有限,所以当有人恶意将mac地址表充满后,就会达到 mac攻击目的: **具体实施:**用kali Linux打开命令行,输入macof,为快速将mac地址 ...

最新文章

  1. 如何配置三层交换机创建VLAN 2
  2. as3.0全屏代码…
  3. 使用DynamoDBMapper查询DynamoDB项目
  4. mysql多种join_MySQL的几种Join
  5. Python更新数据库,解决转译字符与TypeError: XX format: a number is required, not str报错
  6. 【人脸识别】VGGFace--基于VGGNet的人脸识别模型
  7. ambari下 hive metastore 启动失败
  8. MySQL 定时任务event
  9. 分布式存储系统设计的若干原则
  10. 写给准备找工作的同学们(阿里巴巴面试流程)
  11. 1+xbim证书含金量_bim证书哪个含金量高
  12. python调整图片亮度_python 调整图片亮度的示例
  13. Java设计模式(java design patterns)
  14. [SHOI 2008]小约翰的游戏
  15. ubuntu文献翻译软件:兰译
  16. 输入地址查询并获取地址的经纬度-百度地图-JS
  17. matlab 函数笔记
  18. 分析DRAM、NAND FLASH、NOR FLASH三大存储器
  19. 图形讲解git使用教程(附PDF下载)
  20. lepus监控oracle数据库_Lepus(天兔)数据库监控系统之web控制台介绍

热门文章

  1. 基于Python的心电图上位机诊断软件
  2. 十六进制编辑器--HxD和FlexHex
  3. devc调试设置断点后没有反应_基于VSCode的skynet调试器
  4. 暗黑破坏神3网站设计欣赏
  5. 经典小程序源码及其下载地址
  6. live2d动态壁纸android,Live2d壁纸-Live2d动态壁纸下载0.71 beta安卓最新版-宅男必备app,让喜欢的动漫角色在你的手机桌面上动起来西西软件下载...
  7. {基于Applet的J2ME模拟器}和{microemulator}[J2ME推荐]
  8. java7下载64位下载_JRE7 64位(java运行环境)下载|JRE7 64位(java运行环境)官方下载-太平洋下载中心...
  9. 淘宝电子面单怎么用CAINIAO打印组件调打印偏移
  10. 安川机器人梯形图指令(三)