题目:
并没有网址,只给了一个udf.so的文件,百度一下可以知道与MySQL的外部函数库有关,直接去翻mysql的官方手册最有效。
https://dev.mysql.com/doc/refman/8.0/en/udf-compiling.html
大致意思是可以用C++编写一些函数,编译成so文件供mysql调用,题目已经给了我们so文件,所以我们只要看调用部分就可以了。
首先要注意的是文件放在哪供MySQL调用:
根据文档我们可以看到是一个plugin_dir的系统变量确定了外部函数的位置,
所以我们在MySQL中执行命令 select @@plugin_dir 查看默认值是哪个文件夹:
我的mysql结果:
进入到文件夹:
可以看到这个文件夹包含了各种so文件,看来我们找对了地方。
下一步就是把那个文件放进去,有个简单的方法,直接在这个文件中执行wget命令下载就行,省去虚拟机转移的麻烦:wget https://dn.jarvisoj.com/challengefiles/udf.so.02f8981200697e5eeb661e64797fc172
最后就是如何使用库函数了:
这里用第一句话就行,根据提示,构建help_me函数:CREATE FUNCTION help_me RETURNS string SONAME ‘udf.so.02f8981200697e5eeb661e64797fc172’;
看来还有个getflag函数,同样的方法,先创建再调用:
得到flag:PCTF{Interesting_U5er_d3fined_Function}
记录一点,查询所有udf函数 :elect * from mysql.func
如果是window下的MySQL其实过程大同小异,自己尝试就好!
最后补充一篇文章,其实这个漏洞是好早好早之前的啦:
http://www.freebuf.com/articles/system/163144.html
转载指明出处
文章同步到我的博客http://www.zjzhhb.com/archives/439