意思-一次饶有趣味的CTF注入题

zydadmin2023-08-21  59

2021.2.9

好久没有玩LOL了,今天晚上在无限火力模式大杀四方的时候,朋友突然发来一道CTF题,正好好久没做CTF了,拿来练练手。(我是不会说我玩个奥恩被对面杀穿了,一怒之下不打了的)

回归正题,题目的名字与描述

看到提示

Sorry,you are not admin!you are Guest

以及get传参 user=QgcAYAbgbw

猜测这个user参数或许修改可以使我们变成admin

于是想起题目上显示的Base,尝试了一下base64解码

发现并不能解出来,正当我纠结难道是我没有见过的加密时,随意删除了几个字符,页面回显变得不一样了!

这时候很自然的想到,我们可以利用这点将编码对应表跑出来,于是我写了一个小脚本(本人菜鸟,写的脚本拉跨,大佬轻喷)

a-XA d-Xw m-aA i-ZA n-aQ

对于admin用户名的编码就应该是 XAXwaAZAaQ

正当我觉得这题竟然如此简单之时,没想到这只是开始。

我们将user参数改为XAXwaAZAaQ

/?user=XAXwaAZAaQ,继续访问

没想到这时页面出现了一个sql语句,并且给我们自动加上了id参数。

id=LA,这个LA就是数字1的编码。

从回显看出,这里有一个标标准准的sql数字型注入,于是常规手段验证一下猜想。

1 or 1=1#,正准备用编码替换时,发现刚刚爆出来的编码表中,并没有空格的编码!

想到可以利用/**/注释符进行绕过,将语句构造为1/**/or/**/1=1#

再将该语句进行编码转换,手动对照着转换了几个发现实在难受,眼睛都快看花了,于是改了一下刚刚爆破的脚本,只要输入语句,然后自动对着编码表替换即可。

http://106.55.249.213:5001/?user=XAXwaAZAaQ&id=LAKgJQJQKgagbQKgJQJQKgLAOALAHg

发现语句执行没有问题

于是常规操作 order by 判断查询列数

这里测试查询列数为2

开始联合查询 union select 1,2#

查看一下数据库版本,用户,当前正使用的数据库名

手动测试实在是太慢了,而且还容易出错,果断转sqlmap,自己写一个tamper。

下面是我自己写的tamper,其实也就是上面的编码转换脚本。

进base数据库

直接dump就完事了

得到最终flag

感觉我做出来的只是预期的解法,此题应该还有非预期解,目前有17人做出来了,而且此题环境貌似权限较高,允许load_file读取文件,看了下数据库路径,于是猜测了一下web环境路径,一下子就读到了主页文件。

还能读敏感数据文件

总结:

实在太菜了,写的脚本没法看,希望能够继续提升技术,赶紧把自己的GUI工具写出来。

转载请注明原文地址:http://www.2345lzwz.cn/read-144227.html
上一篇下一篇
00

New Post(0)