基础篇——SQL注入(手工注入)

SQL注入

  当我们学习一个知识时我们要考虑几个问题:是什么?怎么做?然后进行有条理的学习

是什么?

  首先我们要明白SQL注入是什么:

    sql——结构化查询语言

    SQL注入就是在网站url中插入sql语句,执行sql命令,获取数据库内容,达到欺骗服务器的目的。

  SQL注入的原理:普通用户提交sql查询语句,网站没有对用户输入进行过滤导致执行用户命令

危害及防护

  危害:SQL注入可以使入侵者获取后台账号密码、拖库、进入后台破坏、拿shell

  防护:设置网站黑名单、限制敏感词汇、对用户输入进行转义、将参数语句化

怎么做?

  明白什么时SQL注入后我们就要学习如何注入。

  注入的前提是要找到注入漏洞,通常判断是否存在SQL注入漏洞的方法有:

    1、  ‘  单引号判断

    2、 and 1=1 1=2  判断

  找到注入漏洞后就可以进行SQL注入了,注入方法分为很多种:

    联合查询法

    逐字猜解法

    偏移注入法

    宽字节注入

    时间、布尔盲注

    报错注入

  进行注入可以使用手工和工具,手工注入方法:

    1、联合查询法

      首先判断存在注入漏洞后:

        1、使用order by

        2、使用联合查询语句:union select nums,nums(字段数) from admin(数据库表名)

                         

        3、根据返回内容进一步猜解列名:账号密码

    2、逐字猜解法:

      逐字猜解不需要进行猜解字段,直接使用逐字猜解语句猜解库名、列名以及账号密码

      逐字猜解语句:

         and exists (select * from 表名)

        and exists (select  列名  from 表名)

        and (select top 1 len(用户名) from admin ) =名字长度

        and (select top 1 asc(mid用户名,1,1)from admin )=97  (判断第一位的ascll值)

          and (select top 1 asc(mid用户名,2,1)from admin )=97  (第二位)

      逐字猜解方法偏于繁琐,熟悉手工注入方式即可,在渗透测试过程中还是要讲究效率问题    

    3、偏移注入法:

      偏移注入属于无法猜解账号密码后尝试的使用方法,注入结果带有一点运气的成分

      偏移注入语句:

        order by 猜解字段

        union select num,num,num from 表名

        union select num,num,* from admin 逐个递减字段数,当可以正常访问则证明admin表存在(递减字段数假设为x)个字段

        之后每次递减x个字段

        递减一个x后

        union select num * from(admin as ainner join admin as b on a.id=b.id)

        递减两个x后

        union select num * from ((admin in as a inner join admin as b on a.id=b.id)inner join admin as c on a.id=c.id)

        逐个递减直到所剩字段小于x后(不一定可以得到所要结果)

    4、宽字节注入法:

      什么时候使用宽字节呢?当web编码使用GBK时,可以将单引号转义则使用宽字节注入

      宽字节注入:%df (注入语句)%23

    5、报错注入,盲注则根据页面返回情况,返回时间进行注入

  以上即为常用的几种手工注入方式,如有错误请留言,博主及时更正!

原文地址:https://www.cnblogs.com/twlr/p/12287141.html

时间: 2024-10-07 07:36:23

基础篇——SQL注入(手工注入)的相关文章

渗透学习笔记--基础篇--sql注入(字符型)

环境:dvwa1.7数据库:mysql前置知识:sql语句(Click me)      在进行sql注入前,我们先熟悉熟悉select语句.一.打开我们的sql终端 二.进入之后可以看到有mysql>我们输入sql语句,即可返回我们想要的结果,注意分号哟!我们使用的dvwa,在我们前几章设置的时候,会在数据库中生成一个dvwa的database:这里我们使用它来进行我们的select 语句:(1)使用dvwa数据库use dvwa;(2)在users表里查询用户名为'admin'的所有信息se

基础篇 - SQL 的约束

基础篇 - SQL 的约束 约束 一.实验简介 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性.本节实验将在实践操作中熟悉 MySQL 中的几种约束. 二.实验内容 1.约束分类 听名字就知道,约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. 在MySQL中,通常有这几种约束: 约束类型: 主键 默认值 唯一 外键 非空 关键字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT NULL 2

渗透学习笔记--基础篇--sql注入(数字型)

环境:dvwa 1.7数据库:mysql dvwa的安全等级:medium 一.分析和查找注入点(1)知识点回顾如果上一篇有好好读过的同学应该知道,我们上一篇遇到的字符型注入.也即是通过Get或者Post方式传进去的数据被单引号或者双引号包裹住.如果我们想要注入自己的payload(有效载荷)的话,则我们必须先闭合前面的单引号或者双引号,否则我们的数据始终会被当做成字符串来处理. 这种类型的注入点称为字符型注入点. (2)这次我们的把防御等级提升了一个层次,来逐步加强我们手工注入的能力以及开更多

基础篇——SQL注入(工具注入)

注入工具 上一篇介绍了SQL注入漏洞以及一些手工注入方法,本篇介绍一下注入工具 1.sqlmap sqlmap属于比较经典的一个注入工具,功能强大,还自带一些绕过参数 使用方法: sqlmap.py -u “url”  对url连接进行注入检测 然后使用注入参数进行注入 -u  //添加url进行检测 -dbs  //进行数据库检测 -tables  //猜解数据库表 -colums  //猜解字段 --level 1~5  //设置注入等级最高5级 --risk  1~3  //设置危险等级

Sql Server 手工注入讲解

1.判断是否有注入 and 1=1 and 1=2 判断注入的方法是一样的 2.初步判断是否是mssql and user>0 3.判断数据库系统 and (select count(*) from sysobjects)>0 mssql and (select count(*) from msysobjects)>0 access 4.注入参数是字符 'and [查询条件] and ''=' 5.搜索时没过滤参数的 'and [查询条件] and '%25'=' 6.猜数表名 and

sql server手工注入

测试网站testasp.vulnweb.com 1. http://testasp.vulnweb.com/showforum.asp?id=0 http://testasp.vulnweb.com/showforum.asp?id=0' http://testasp.vulnweb.com/showforum.asp?id=0 and 1=1 http://testasp.vulnweb.com/showforum.asp?id=0 and 1=2 2.数据库版本 http://testasp

关于oracle延时型注入手工注入的思考

平时遇到oracle注入的情况不是很多,今天遇到一处oracle注入的延时型注入,简单记录一下. 测试和漏洞挖掘中,通过页面响应时间状态,通过这种方式判断SQL是否被执行的方式,便是延时性注入,oracle延时性注入和其他的数据库不同,oracle的时间盲注通常使用DBMS_PIPE.RECEIVE_MESSAGE(),也是通过sqlmap和网上师傅们的文章才知道的,当去手注的时候大脑一片空白,网上的资料也不是很多. 首先看一下官网对DBMS_PIPE.RECEIVE_MESSAGE()函数的介

SQL Server调优系列基础篇(联合运算符总结)

前言 上两篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符的优化技巧,本篇我们总结联合运算符的使用方式和优化技巧. 废话少说,直接进入本篇的主题. 技术准备 基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 一.联合运算符 所谓的联合运算符,其实应用最多的就两种:UNION ALL和UNION. 这两个运算符用法很简单,前者是将两个数据集结果合并,后者则是合并后进行去重操作,如果有过写T-SQL语句的码农都不会陌生. 我们来分析下

SQL Server调优系列基础篇(并行运算总结)

原文:SQL Server调优系列基础篇(并行运算总结) 前言 上三篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符.联合运算符的优化技巧. 本篇我们分析SQL Server的并行运算,作为多核计算机盛行的今天,SQL Server也会适时调整自己的查询计划,来适应硬件资源的扩展,充分利用硬件资源,最大限度的提高性能. 闲言少叙,直接进入本篇的正题. 技术准备 同前几篇一样,基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 一.并