shell 提取sql 的字段名表名_渗透测试之SQL注入(二)

文章原载于公众号:猪猪谈安全

作者:随风kali

前文一篇渗透测试之SQL注入(一)给大家讲了SQL注入的产生原理,SQL注入的种类和一些防御SQL注入的手段。接下来的篇章呢都是从实例去分析SQL注入。

首先我们先分析一下DVWA靶场low等级的SQL注入。

1c4d822ede6347f9ac4026322116822e.png

这里有一个user id需要我们填写,那我们先填写一个1看看会发生什么。

da71dece1935d00f67ae39f865de38d5.png

这里查询到了user id为1号的信息,还记得我们前文说的验证SQL注入的方法吧,在1后面加个单引号,那我们输入1‘在试一试。

可以看到我们输入1'导致SQL语句不能正常解析最终导致程序报错

cac24ad25d6f2271d8295a9d8d8369ee.png

那我们初步判断这里是存在注入点的,那么我们可以去查看一下源代码来分析分析。

5c65dd0e97da634cdc0849c684212ccb.png

可以看到这里的SQL语句,然后可以看到后文代码没有对我们的id参数进行任何的过滤处理,这里就满足了我们的注入要求,有可控变量id且没有做任何过滤,语句被带入到数据库进行查询。知道了此处存在SQL

注入,那么我们该如何进行利用呢。

以下以MYSQL数据库为例子

首先呢在学习SQL注入之前我们需要知道的几个函数

database():当前网站使用的数据库

version():当前MYSQL使用的版本

user():当前MYSQL的用户

当我们不知道任何条件时,我们就要如下查询

select 要查询的字段名 from 库名.表名

那再根据我们看到的SQL语句,这里我们就可以利用一下联合查询

1' union select 1,database()#

这里有几个需要注意的地方

1.我们的1后面需要单引号进行闭合

2.运用union select联合查询我们后面所要查询的字段个数要和之前一致,这里有两个字段,一个是1,还一个是database()

3.最后一个注意点就是最后我们要用#注释掉后面的内容,因为在MYSQL语句种#是注释的意思

4fec58fec3fd382641411d704188ca44.png

输入后可以看到爆出我们的当前数据库名字

在知道一条数据后我们就可以通过如下语句进行查询

select 要查询的字段名 from 库名.表名 where 已知条件字段名字=已知条件的值

又因为mysql 5.0以上版本自带数据库,information_schema记录有当前mysql下所有数据库名,表名,列名信息。下列是存放各信息的名字

information_schema.schemata:记录数据库信息的表
information_schema.tables:记录表名信息的表
information_schema.columns:记录列名信息的表
schema_name 数据库名
table_name 表名
column_name 列名
table_schema 数据库名

其中的' . '是为下一级的意思,知道了这些我们就可以构造一下SQL语句

上面我们已经知道了数据库名字为dvwa所以我们就可以爆出dvwa里面的表名

1'union select 1,table_name from information_schema.tables where table_schema="dvwa"#

a70458da77813c2f59c2d8e896a39e11.png

有看到users表,users里面一般存放的是用户的信息,所以我们再爆一下users表下面的列名信息

1' union select 1,column_name from information_schema.columns where table_name='users'#

8885e111fb0917a1ba55190f9f50a9d3.png

这里可以看到一些user、password字段估计就是存放用户和用户密码了,那我们再查看一下这些字段里面的内容。

1' union select 1,concat(user,password) from users#

bf51465e0b4f00038ab42b7dc91bff04.png

这里就爆出了账号和密码的MD5值,然后我们可以把MD5值解密就可以查看到用户密码了

5b83fc88a6777c811e409f6e1cde854f.png

这一般就是SQL注入的一般步骤了,当然这只是SQL注入的一小部分,还有一些高级注入技巧会在后续文章写出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值