1. 第一道sql注入题所学

  1. 总体思路:

    其实flag藏在网站的数据库某张表的某个字段中,作为一行记录存在。所以我们要做的事就是,通过sql注入,找到所有的database,找到每个database的每一张table,找到每一张table的每一个字段。

在这里插入图片描述

  1. 自己不熟悉的地方:

    • select … where xxx = ‘’ union select 1,2,3如何让1,2,3体现在界面上 ?即需不需要加 and 1=1 或者 or 1=1。

      答:如果加了or 1=1,那么相当于where 1=1,即把所有数据都查了出来,就不行。可以直接用’闭合或者使用’闭合后,加一个and 1 = 1。其实可以通过试来。

    • information_schema数据库的使用,以及group_concat的理解。

      答:information_schema数据库有两张关键的表,一张是tables表,另一张是columns表。

      (1.1) information_schema.tables表的字段table_schema,代表着所有**数据库(database)**的名称。可以通过select table_schema from information_schema.tables来查看所有数据库名称,效果如图:

      在这里插入图片描述

      但是会有很多重复的。我们可以通过select table_schema from information_schema.tables group by table_schema来查看去重后的数据库名称。效果如下:

    在这里插入图片描述

    (1.2) information_schema.tables表的字段table_name,代表着所有的数据库表(table)。可以通过select table_name from information_schema.tables来查看。然后,数据库表总和某个数据库相对应,所以一般是select table_name, table_schema from information_schema.tables,如图所示:
    在这里插入图片描述

    如果想一行记录看一种数据库,以及它里面的所有表,那么可以用到group_concat,比如:select group_concat(table_name), table_schema from information_schema.tables group by table_schema,其效果如下:

    在这里插入图片描述

    通过使用group_concat和不使用group_concat的对比,可以直观发现group_concat的作用,如下图所示:

    在这里插入图片描述

    当然,information_schema.tables还有许多其他的字段,上面两个是information_schema.tables的主要字段,通过select * from information_schema.tables可以查看


    (2) information_schema.columns表的column_name字段可以查看所有数据库中的所有表的所有字段(column)。字段确定之前,一般要确定字段所在数据库的名称以及表的名称。所以查询的sql语句一般如下:

    select column_name from information_schema.columns where table_schema="whichDatabase" and table_name ="whichTable"

    如果"whichDatabase"为"information_schema"并且"whichTable"为"columns",那么效果如下:

    在这里插入图片描述

  2. 小总结

在这里插入图片描述


2022.11.7 回顾

  • show databases; =
    select table_schema from information_shema.tables;
    select table_schema from information_schema.tables group by table_schema;
  • show tables; =
    select table_name from information_schema.tables where table_schema='dvwa'
  • 如何查看表结构?
    select * from dvwa.users;
    desc users;
    select column_name from information_schema.columns where table_schema="dvwa" and table_name="users";
  • 查看当前使用的哪个数据库
    select database();

参考链接:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值