DVWA--low模式下的sql字符型注入

不管是什么网页或者网站都是需要将你的数据传输到数据库中,登录页面,商品页面,搜索页面都会有。 他会根据你输入的信息,去数据库里边进行查询查看,那么我们如果输入的sql语句那他会不会执行?

       如果网页中存在这种前端同学疏忽的判断语句,那么利用sql注入的方法可以将数据库的表名,字段名,甚至一些隐私信息获取到。那么将会面临网站甚至公司的瘫痪。      

       Sql注入按照注入点的参数类型分类  分为 int数值型 string字符型以like搜索型

这里讲一下string字符型

Sql注入的过程:

        构造测试语句----提交请求------分析返回结果

        如果符合预期结果就说明存在漏洞,如果不符合可以更换构造的测试语句,如果还是不行就说明不存在漏洞。

        接下来以靶场的例子作为一个展示,进入熟悉的DVWA靶场,这里这个级别选low

因为默认是impassbile,翻译过来就是不可能。

 

        来到这个 <SQL Injection>,先判断这个是字符型注入还是数值型,输入数字1来看一下结果。 可以看到是有结果的

 

那继续输入1'  如果还是不行的话可以输出1" 或者1),因为这是字符型最常见的三个

可以看到是出错了,那么继续输入1’#(这里这个#在数据库中是注释的意思,就是如果后边还有其他命令给他注释掉) 

从这里开始每个字符都是英文

这里又好了,在1后边加上单引号的意思就是看他是不是字符型 因为它这里的sql语句有可能是:

Select first_name from users where user_id=’ ’;

加上咱们刚才输入的1’# 就变成了以下的语句:

Select first_name from users where user_id=’1’#’                                             

在这里看到任何效果,那就去数据库中执行一下,看看,这是上边的语句

 然后执行出来

这里出现了结果,虽然不一样,但是基本可以判定是单引号的字符型,如果还没有看出来还可以继续尝试,接下来就输入一个1+2,如果是数值型1+2等于3,应该出来3的数据,如果是字符型的话就出来的是1的数据

出来的还是admin,那么这就可以肯定是字符型了,如果你还有质疑,直接进数据库,查看

 

数据明显是不一样的,不带引号跟带引号的结果是不一样的。那么接下来数据库有一个命令是union(联合查询)将多条查询语句的结果合并成一个结果

那么咱们直接使用union配合select语句是不是可以看到数据库里边的数据?看数据之前需要使用order by命令 这个命令在数据库里边是排序的 默认是升序(esc)降序是desc

order by 1就是对第一列字段进行排序,这样可以测试他这条命令一共几个字段,有几个就需要在select后边写几个,如果只是想看一个的话会出现下边这个错误,我这边输出的是

1' union select database()

Select database()是查看数据库的

这个提示大概就是说,使用的select语句有不同的列数。怎样避免这个问题,就用order by来测试 

 

 

 

上边就可以看到输入3的时候出错了,说不知道有第三列,那么它可以查找两列

这个测试完了之后,就可以真正的开始注入,来输入1’ union select 1,database()#

这里的select 1中的1没有实际作用,只是用来当一个参数

 

可以看到数据库名已经出来了,我这个叫Surname=root是因为我更改了之前的数据库文件,默认的是dvwa大家不要担心。

      这里给大家补充一个数据库的知识点,因为这里要使用mysql自带的元数据:

table_name 代表数据库名,table_name 代表表名,column_name代表字段名

information_schema可以看做一个具体的数据库 information_schema.tables是用来查找表名的  information_schema.columns 是用来查找字段的

       数据库出来了就可以查看里边的表了 这里输入 1' union select 1,table_name from information_schema.tables where table_schema=’root’# 

可以看到里边有两个表 一个是guestbook 一个是users,表都看到了,那么看一下users里边的字段吧,因为user的中文是用户,里边放了用户名跟密码。(注意!:如果你想要注入其他的私人网站需要经过同意,因为这样是违法的

然后输入这条命令:

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

 

这里获得了这个users表的账号跟密码的字段名,那么就可以,使用这两个字段名来获取所有的账号跟密码的信息

然后这里输入

1' union select user,password from users#

拿到这些东西基本就结束了,这是最常用的语句,只需要稍加改动,用到搜索型以及数值型都可以用。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值