学会了第一关,时隔多天来到了第二关,怎么说了没有看wp就给做出来了。

首先,我是自己先判断了下,这个是什么注入

?id=1'  不行

?id=1' or '1'='1--+  也不行

然后又尝试了下

?id=1 and 1=1  页面显示正常

?id=1 and 1=2  页面又错误回显

然后这就是数字注入了

于是我们去查库,跟第一关的思路是一样的。然后就爆出了库。如果不懂的可以点这个链接。

https://www.cnblogs.com/junlebao/p/13758919.html

 sql注入一般步骤:

第一步:通过特殊的数据库查询语句

第二步:在数据库的错误返回中找到sql漏洞

第三步:利用sql语句猜解管理人员信息并登录管理员后台

判断注入类型

数字型注入

1. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1'时,因为有一个多余的"单引号"使查询语句错误

2. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1 and 1=1时,没有报错

3. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1 and 1=2时,由于1=2不成立,也会报错

满足这三个,基本上就是数字注入了

字符型注入

1. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1'时,数据库认为id叫做1'。查询之后发现没有这个id而返回错误。(在字符型注入中,需要考虑引号的闭合)

2. url为 http://127.0.0.1/sqli-labs/Less-2/?id=1' and '1'='1 在'1'='1之后没有加上'是因为传参时输入的内容已经被' '包围。

后台查询列数

使用order by试出数据库列数

url为 http://127.0.0.1/sqli-labs/Less-2/?id=1' order by 数字 (如果试4时有错误,3时正确,那么列数为3)

找显示位

使用union select找出会返回客户端并显示的列。如果有3列时,应该这么写

url为 http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,3

加入显示位是3,这就意味着数据库开放了5个“窗口”用来显示内容,用查询到的数据,在这些窗口显示数据

查库名

联合查询:select database();

下面是查看数据库的版本和数据库信息

假如显示位是3,http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,version,database()

查表名

找到库名以后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,table_name from information_schema.tables where table_schema='库名' (如果库名是字符型,此处库名要转成十六进制)

information_schema:

这是一个mysql自带的库,其中保存着关于mysql服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表列的数据类型与访问权限等,所以我们查询这个库

查列名

找到表之后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,column_name from information_schema.columns where table_name='表名' (如果表名是字符型,此处库名要转成十六进制)

如果表数或列数过多,可以在最后使用limit加上limit 0,5相当于检索1-5条信息

查具体数据

找到列之后,使用http://127.0.0.1/sqli-labs/Less-2/?id=1' union select 1,2,group_concat("要查询的数据") from 表名

sqli-labs第二关 详解的更多相关文章

  1. upload-labs打关详解

    1-19关 00x01 JS检查 方法一.修改javascript代码,将.php添加到允许上传的类型中 3.上传成功 方法二:绕过前端,通过burpsuit抓包,上传一张info.jpg图片,然后抓 ...

  2. sqli-labs第一关 详解

    sqli-labs第一关 方法一:手工注入 方法二:sqlmap工具 两种方式,都可以学学,顺便学会用sqlmap,也是不错的.不多说,我们开始吧 方法一: 来到第一关,图上说我们需要一个数字的参数 ...

  3. 组件--Fragment(碎片)第二篇详解

    感觉之前看的还是不清楚,重新再研究了一次 Fragment常用的三个类: android.app.Fragment 主要用于定义Fragment android.app.FragmentManager ...

  4. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)

    IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...

  5. XML详解:第二部分 XML Schema

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. PE文件格式详解,第二讲,NT头文件格式,以及文件头格式

    PE文件格式详解,第二讲,NT头文件格式,以及文件头格式 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) PS:本篇博客 ...

  7. Redis进阶实践之十五 Redis-cli命令行工具使用详解第二部分(结束)

    一.介绍           今天继续redis-cli使用的介绍,上一篇文章写了一部分,写到第9个小节,今天就来完成第二部分.话不多说,开始我们今天的讲解.如果要想看第一篇文章,地址如下:http: ...

  8. 前端技术之_CSS详解第二天

    前端技术之_CSS详解第二天 1.css基础选择器 html负责结构,css负责样式,js负责行为. css写在head标签里面,容器style标签. 先写选择器,然后写大括号,大括号里面是样式. & ...

  9. “全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. spring如何创建RESTful Service

    REST REST,是指REpresentational State Transfer,有个精辟的解释什么是RESTful, 看url就知道要什么 看method就知道干什么 看status code ...

  2. UnitTest框架的快速构建与运行

    我们先来简单介绍一下unittest框架,先上代码: 1.建立结构的文件夹: 注意,上面的文件夹都是package,也就是说你在new新建文件夹的时候不要选directory,而是要选package: ...

  3. 【JDK】Linux安装源码包JDK完整步骤

    [JDK]Linux安装源码包JDK完整步骤 1.检查一下系统中的jdk版本 [root@localhost software]# java -version 显示: openjdk version ...

  4. Android开发之强大的网络判断工具,判断是否联网,判断是wifi还是3g网络等java工具代码类

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, 转载请说明出处. 给大家分享一个Android开发者常用的工具类.主要针对网络判断的 功能强大.下面 ...

  5. POJ-1273Drainage Ditches(网络流入门题,最大流)

    Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This ...

  6. MySQL通过POIN数据类型查询指定范围内数据

    情况一: 数据库:只有point类型的location字段 实体类:有经纬度字段(double).originLoction字段(存放string类型的数据库location字段:POINT(123. ...

  7. PHP的九个超全局变量

    1. 什么是超全局变量 PHP官网:超全局变量 超全局变量就是在全部作用域中始终可用的内置变量. 全局作用域.函数作用域都可以使用的PHP内置变量. 在函数或方法中无需执行 global $varia ...

  8. Linux驱动之设备树的基础知识

    前期知识   1. 如何编写一个简单的Linux驱动(一)--驱动的基本框架   2. 如何编写一个简单的Linux驱动(二)--设备操作集file_operations   3. 如何编写一个简单的 ...

  9. 大写的服,看完这篇你还不懂RocketMQ算我输

    目录 RocketMQ介绍 RocketMQ概念 为什么要用RocketMQ? 异步解耦 削峰填谷 分布式事务最终一致性 数据分发 RocketMQ架构 RocketMQ消息类型 普通消息 顺序消息 ...

  10. Linux常用的三种软件安装方式

    一:Linux源码安装    1.解压源码包文件    源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩,后缀格式会分别为.tar.gz与.tar.bz2,分别的解压方式:   ...