SQL注入产生原理

  1. 可控变量(注入点,就是传参)
  2. 带入数据库查询
  3. 变量未存在过滤或过滤不严谨

例子:

获取admin表的pass里面的数据

select * from users where id=1 union select 1,pass,3,4 from admin  //正常执行的SQL查询命令

http://127.0.0.1:8080/test.php?x=1 union select 1,pass,3,4 from admin  //有注入点的SQL注入示例

http://127.0.0.1:8080/test.php?x=  //注入点,可控变量

修改URL地址上的参数值,就等于修改对应执行的SQL语句(利用自定义的SQL语句达到查询指定数据)

SQL注入的危害?

数据库数据泄露,文件操作,数据读取等

数据泄露可导致后台权限,后台权限导致网站权限,网站权限导致服务器权限。。。。。。

SQL注入发现及利用方式

由于SQL注入属于WEB应用层,发现的话可以采用web扫描器或手工检测,利用的话也是分为工具及手工(相互配合使用,工具不一定万能),常用工具Sqlmap。

SQL注入的攻击方式的影响因素

  • 数据库类型

不同数据库类型导致不同攻击方式
    access
    mysql
    mssql
    Oracle
    postSQL等

  • 提交方式

参数传递的提交方式不同类型导致不同攻击方式
    get
    post
    HTTP
    全局提交
    cookie等

  • 参数类型

参数的数据类型导致不同攻击方式
    数字
    字符
    搜索

  • 绕过注入

waf防护
    代码防护
    函数防护
    其他防护

  • SQL查询类型

select
    insert
    update
    delete等

  • 盲注或复杂注入

各类复杂的注入问题
    延时注入
    二次注入
    逻辑注入等

SQL注入环境搭建常见问题

初学者建议搭建sqli-labs靶场学习

如果出现搭建错误:mysql_connet()函数版本不兼容,解决方法:

1.降低PHP版本

2.修改代码中的mysql连接函数

注意经常遇到的问题:

www.xxx.com/php?page=1&id=5   该注入点如果用以前过时的注入工具对这个地址注入时,很可能只在后面加上判断语句:

www.xxx.com/php?page=1&id=5 and 1=1

这就造成了,只测试到id参数,而前面的page参数测试不到,所以我们要把id和page参数位置调换一下:

www.xxx.com/php?id=5&page=1 and 1=1

这样才行,使用sqlmap可以自动测试两个参数

初探SQL注入需要知道的5个问题的更多相关文章

  1. 初探SQL注入

    1.1注入语句(通过时间注入函数) 数据库名称 localhost:8080/ScriptTest/userServlet?username='union SELECT IF(SUBSTRING(cu ...

  2. 关于PostgreSQL的SQL注入必知必会

    一.postgresql简介 postgresql是一款关系型数据库,广泛应用在web编程当中,由于其语法与MySQL不尽相同,所以其SQL注入又自成一派. 二.postgresql的SQL注入:(注 ...

  3. 面试必须要知道的SQL语法,语句

    面试必须要知道的SQL语法,语句 收藏 asc 按升序排列desc 按降序排列下列语句部分是Mssql语句,不可以在access中使用.SQL分类: DDL—数据定义语言(Create,Alter,D ...

  4. 不得不看,只有专家才知道的17个SQL查询提速秘诀!

    不得不看,只有专家才知道的17个SQL查询提速秘诀! 原创 2018-01-23 布加迪编译 51CTO技术栈 “ 除非你遵循本文介绍的这些技巧,否则很容易编写出减慢查询速度或锁死数据库的数据库代码. ...

  5. sql 注入初探

    Sql注入:就是将恶意的sql语句插入到用户输入的参数当中并带入数据库中查询并在浏览器返回不该显示的信息 寻找sql注入点: 1.要有参数值的传递(url当中GET型的.注册用户名的页面.登录框.留言 ...

  6. 利用SQL注入漏洞登录后台的实现方法

    利用SQL注入漏洞登录后台的实现方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-01-12我要评论 工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意.读 ...

  7. SQL注入小结

    分类学习有利于条理化知识,大致的SQL注入分为三种: 1.BealeanBase 2.TimeBase 3.ErrorBase 1.从最简单的说起,基于布尔类型是最常见的SQL注入方式 select ...

  8. SQL注入(二)

    5.限制输入长度 如果在Web页面上使用文本框收集用户输入的数据,使用文本框的MaxLength属性来限制用户输入过长的字符也是一个很好的方法,因为用户的输入不够长,也就减少了贴入大量脚本的可能性.程 ...

  9. 参数化查询为什么能够防止SQL注入 (转)

    很多人都知道SQL注入,也知道SQL参数化查询可以防止SQL注入,可为什么能防止注入却并不是很多人都知道的. 本文主要讲述的是这个问题,也许你在部分文章中看到过这块内容,当然了看看也无妨. 首先:我们 ...

随机推荐

  1. SQL驱动限制,导致插入失败

    insert into TB_IF_ORDERS (DC_CD,JOB_DT,SEQ_NO,ORDER_KEY,ORDER_ID,ORDER_LINE_NUM,COMPANY_CD,CUST_CD,S ...

  2. Git代码分支开发工作流程

    本文的工作流程,有一个共同点:都采用"功能驱动式开发"(Feature-driven development,简称FDD). 它指的是,需求是开发的起点,先有需求再有功能分支(fe ...

  3. 一个mac软件合集的网站

    https://github.com/jaywcjlove/awesome-mac/blob/master/README-zh.md

  4. DAOS 分布式异步对象存储|存储模型

    概述 DAOS Pool 是分布在 Target 集合上的存储资源预留.分配给每个 Target 上的 Pool 的实际空间称为 Pool Shard. 分配给 Pool 的总空间在创建时确定,后期可 ...

  5. ECharts使用指南

    第一步,引入ECharts: echars的引入十分简单,只需要在html中嵌入即可: <!DOCTYPE html> <html> <head> <scri ...

  6. [Fundamental of Power Electronics]-PART I-3.稳态等效电路建模,损耗和效率-3.5/3.6 示例:Boost变换器中包含的半导体传导损耗/要点小结

    3.5 示例:Boost变换器中包含的半导体传导损耗 作为最后一个示例,让我们考虑对图3.22所示的Boost变换器中的半导体传导损耗进行建模.功率损耗的另一个主要来源是半导体器件的正向电压降引起的传 ...

  7. ASP.NET扩展库之Http日志

    最佳实践都告诉我们不要记录请求的详细日志,因为这有安全问题,但在实际开发中,请求的详细内容对于快速定位问题却是非常重要的,有时也是系统的强力证据.Xfrogcn.AspNetCore.Extensio ...

  8. Java 获取Word中的标题大纲(目录)

    概述 Word中的标题可通过"样式"中的选项来快速设置(如图1), 图1 在添加目录时,可将"有效样式"设置为"目录级别"显示(如图2),一 ...

  9. BUAA_2020_OO_UNIT4_REVIEW&ALL_REVIEW

    OO第四单元总结&&学期总结 1. 第四单元作业总结 本单元三次作业都围绕了UML图的建模展开,第十三次作业只有类图,第十四次作业增加了顺序图和状态图,第十五次增加了部分UML规则的判 ...

  10. OrchardCore 如何动态加载模块?

    前言 今天,我们再次讨论下OrchardCore,通过初期调研,我们项目采用OrchardCore底层设施支持模块化,同时根据业务场景,额外还需支持二次开发,于是有了本文,若有不同解决方案,欢迎留言探 ...