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. Idea 报错 xxxx too long

    问题:写单元测试,debug时,报错如下图 解决方法1: 在项目/.idea/workspace.xml文件中添加一行代码如下 <component name="PropertiesC ...

  2. Navicat 121版本激活工具

    以下是工具的链接: https://github.com/DoubleLabyrinth/navicat-keygen/blob/windows/README_FOR_WINDOWS.zh-CN.md ...

  3. 总结数据科学家常用的Python库

    概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...

  4. python 实现输出一个等腰三角形

    这个问题实际上是一个数学问题,我们主要找出每行的规律就可以根据规律来书写代码 """ 2 代码实现输出一个等腰三角形,实际上就是一个等差数列求各项的一个数学> 问题 ...

  5. 高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术

    1.背景 1.1 高精资料采集 高精采集车是集成了测绘激光.高性能惯导.高分辨率相机等传感器为一体的移动测绘系统.高德高精团队经过多年深耕打造的采集车,具有精度高.速度快.数据产生周期短.自动化程度高 ...

  6. 想了很久,一道Microsoft的笔试题目 —— Reversing Linked List

    Reversing Linked List Given a constant K and a singly linked list L, you are supposed to reverse the ...

  7. ArrayList这篇就够了

    提起ArrayList,相信很多小伙伴都用过,而且还不少用.但在几年之前,我在一场面试中,面试官要求说出ArrayList的扩容机制.很显然,那个时候的我并没有关注这些,从而错过了一次机会.不过好在我 ...

  8. 批量SSH key-gen无密码登陆认证脚本 附件脚本

    # 批量实现SSH无密码登陆认证脚本 ## 问题背景 使用为了让linux之间使用ssh不需要密码,可以采用了数字签名RSA或者DSA来完成.主要使用ssh-key-gen实现. 1.通过 ssh-k ...

  9. B. 【例题2】移位包含

    解析 判断是否是子串,可以将这个一个环 #include <bits/stdc++.h> using namespace std; int f = 0; string a, b; int ...

  10. ionic3 StatusBar 不显示问题

    import { StatusBar } from '@ionic-native/status-bar'; constructor(private statusBar: StatusBar) { } ...