渗透测试工具-sqlmap
第七章:SQLMap实战进阶
目标对象 请求 优化 —线程
警报
beep
答案:
1、解析: A、解析:架构(Schema)是形成单个命名空间的数据库实体的集合。
架构不负责权限的授予,其主要目的是将架构管理与用户管理分开,并使删除数据库用户变得极为简单。
在 MSSQL 中,用户(User)和架构是隐含关联的,即每个用户拥有与其同名的架构。
因此要删除一个用户,必须先删除或修改这个用户所拥有的所有数据库对象,
就比如 一个员工要离职要删除他的账户的时候,还得将他所创建的表和视图等都删除,影响过大。
SQL SERVER 2005/2008将架构和对象者分离后就不在存在这样的问题,删除用户的时候不需要重命名该用户架构所包含的对象,在删除创建架构所含对象的用户后,不再需要修改和测试显式引用这些对象的应用程序。
2、解析: D、如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。
即权限传递不会被收回。
3、解析: B、解析:Oracle进行类似UNION查询数据时候必须让对应位置上的数据类型和表中的列的数据类型是一致的,也可以使用 null代替某些无法快速猜测出数据类型的位置。
而Mysql没有这类限制
4、解析: D、解析:Oracle存在提权漏洞的一个重要原因是PL/SQL定义的两种调用权限导致,
默认使用该存储过程的调用权限。
5、解析: B、解析:MSSQL是一个服务,不是一个应用程序,
因此需要在services.msc进行管理、配置
在 SQLMap 中,`--force-ssl` 是一个选项,用于强制启用 SSL/TLS 加密连接。这意味着 SQLMap 会尝试通过 HTTPS 协议与目标 Web 应用程序进行通信,而不是使用 HTTP 协议。
当你使用 `--force-ssl` 选项时,SQLMap 将会自动检测目标网站是否启用了 SSL/TLS 加密连接。如果目标网站没有启用 SSL/TLS 加密连接,SQLMap 将尝试通过 HTTPS 协议发起请求,并绕过 SSL/TLS 错误警告。
在某些情况下,目标网站可能支持 SSL/TLS 连接,但并不会通过 HTTP 自动重定向到 HTTPS。这也就意味着,如果你只是简单地使用 HTTP 协议扫描目标应用程序,那么你可能无法检测到目标网站是否支持 SSL/TLS 加密连接。因此,使用 `--force-ssl` 选项可以帮助你确保在扫描目标应用程序时始终使用安全的连接。
需要注意的是,强制启用 SSL/TLS 加密连接并不一定能够保证完全安全。SSL/TLS 加密连接可能会受到中间人攻击、SSLStrip 攻击等各种攻击方式的影响。因此,在对目标应用程序进行测试时,你应该考虑实施其他安全措施,如确认目标应用程序是否支持 HSTS 策略、使用 HTTPS Everywhere 浏览器插件等。
sqlmap 使用tamper脚本绕过WAF
在实际的渗透测试中,环境往往比较复杂,使用 SQLMap 提供的 tamper 脚本,可在一定程度上避开应用程序的敏感字符过滤、绕过 WAF 规则的阻挡,继而进行渗透攻击。
kali sqlmap的绕过脚本在目录/usr/share/sqlmap/tamper/下,以下是网上找的部分tamper脚本的解释
apostrophemask.py
适用数据库:ALL
作用:将引号替换为utf-8,用于过滤单引号
使用脚本前:tamper("1 AND '1'='1")
使用脚本后:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871
base64encode.py
适用数据库:ALL
作用:替换为base64编码
使用脚本前:tamper("1' AND SLEEP(5)#")
使用脚本后:MScgQU5EIFNMRUVQKDUpIw==
multiplespaces.py
适用数据库:ALL
作用:围绕sql关键字添加多个空格
使用脚本前:tamper('1 UNION SELECT foobar')
使用脚本后:1 UNION SELECT foobar
space2plus.py
适用数据库:ALL
作用:用加号替换空格
使用脚本前:tamper('SELECT id FROM users')
使用脚本后:SELECT+id+FROM+users
nonrecursivereplacement.py
适用数据库:ALL
作用:作为双重查询语句,用双重语句替代预定义的sql关键字(适用于非常弱的自定义过滤器,例如将select替换为空)
使用脚本前:tamper('1 UNION SELECT 2--')
使用脚本后:1 UNIOUNIONN SELESELECTCT 2--
space2randomblank.py
适用数据库:ALL
作用:将空格替换为其他有效字符
使用脚本前:tamper('SELECT id FROM users')
使用脚本后:SELECT%0Did%0DFROM%0Ausers
unionalltounion.py
适用数据库:ALL
作用:将union all select 替换为union select
使用脚本前:tamper('-1 UNION ALL SELECT')
使用脚本后:-1 UNION SELECT
securesphere.py
适用数据库:ALL
作用:追加特定的字符串
使用脚本前:tamper('1 AND 1=1')
使用脚本后:1 AND 1=1 and '0having'='0having'
space2dash.py
适用数据库:ALL
作用:将空格替换为--,并添加一个随机字符串和换行符
使用脚本前:tamper('1 AND 9227=9227')
使用脚本后:1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227
space2mssqlblank.py
适用数据库:Microsoft SQL Server
测试通过数据库:Microsoft SQL Server 2000、Microsoft SQL Server 2005
作用:将空格随机替换为其他空格符号('%01', '%02', '%03', '%04', '%05', '%06', '%07', '%08', '%09', '%0B', '%0C', '%0D', '%0E', '%0F', '%0A')
使用脚本前:tamper('SELECT id FROM users')
使用脚本后:SELECT%0Eid%0DFROM%07users
between.py
测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:用NOT BETWEEN 0 AND #替换>
使用脚本前:tamper('1 AND A > B--')
使用脚本后:1 AND A NOT BETWEEN 0 AND B--
percentage.py
适用数据库:ASP
测试通过数据库:Microsoft SQL Server 2000, 2005、MySQL 5.1.56, 5.5.11、PostgreSQL 9.0
作用:在每个字符前添加一个%
使用脚本前:tamper('SELECT FIELD FROM TABLE')
使用脚本后:%S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%E
sp_password.py
适用数据库:MSSQL
作用:从T-SQL日志的自动迷糊处理的有效载荷中追加sp_password
使用脚本前:tamper('1 AND 9227=9227-- ')
使用脚本后:1 AND 9227=9227-- sp_password
charencode.py
测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:对给定的payload全部字符使用url编码(不处理已经编码的字符)
使用脚本前:tamper('SELECT FIELD FROM%20TABLE')
使用脚本后:%53%45%4C%45%43%54%20%46%49%45%4C%44%20%46%52%4F%4D%20%54%41%42%4C%45
randomcase.py
测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:随机大小写
使用脚本前:tamper('INSERT')
使用脚本后:INseRt
charunicodeencode.py
适用数据库:ASP、ASP.NET
测试通过数据库:Microsoft SQL Server 2000/2005、MySQL 5.1.56、PostgreSQL 9.0.3
作用:适用字符串的unicode编码
使用脚本前:tamper('SELECT FIELD%20FROM TABLE')
使用脚本后:%u0053%u0045%u004C%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004C%u0044%u0020%u0046%u0052%u004F%u004D%u0020%u0054%u0041%u0042%u004C%u0045
space2comment.py
测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:将空格替换为/**/
使用脚本前:tamper('SELECT id FROM users')
使用脚本后:SELECT/**/id/**/FROM/**/users
equaltolike.py
测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5
作用:将=替换为LIKE
使用脚本前:tamper('SELECT * FROM users WHERE id=1')
使用脚本后:SELECT * FROM users WHERE id LIKE 1
equaltolike.py
测试通过数据库:MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:将>替换为GREATEST,绕过对>的过滤
使用脚本前:tamper('1 AND A > B')
使用脚本后:1 AND GREATEST(A,B+1)=A
ifnull2ifisnull.py
适用数据库:MySQL、SQLite (possibly)、SAP MaxDB (possibly)
测试通过数据库:MySQL 5.0 and 5.5
作用:将类似于