黑客攻防技术宝典web实战篇:攻击数据存储区习题
猫宁!!!
参考链接:http://www.ituring.com.cn/book/885
随书答案。
1. 如果要通过实施 UNION 攻击、利用 SQL 注入漏洞获取数据,但是并不知道最
初的查询返回的列数,如何才能查明这个值?
可以通过两个简单的方法确定列数。其一,可以 SELECT 每个列中的类型中
性值 NULL,并逐渐递增列数,直到应用程序返回数据,表明指定了正确的列数,
例如:
' UNION SELECT NULL--
' UNION SELECT NULL, NULL--
' UNION SELECT NULL, NULL, NULL--
请注意,在 Oracle 上,需要在上述每种情况的最后一个 NULL 后添加 FROM DUAL。
另外,可以注入 ORDER BY 子句并递增指定列,直到引发错误,表明请求了
无效的列:
' ORDER BY 1--
' ORDER BY 2--
' ORDER BY 3--
2. 已经确定一个字符串参数中的 SQL 注入漏洞,已经确信数据库为 MS-SQL 或
Oracle,但当前无法获得任何数据或错误消息确定到底是哪个数据库。如何才能
查明这一点?
一种确认数据库类型的简单方法,是使用数据库特定的字符串串联语法在所控制
的查询中构建某个良性输入。例如,如果原始参数值为 London,则可以轮流提
交以下数据项:
'||' London
'+'London
如果第一个数据项导致和原始参数值相同的行为,说明数据库可能为 Oracle。
如果第二个数据项导致和原始参数值相同的行为,说明数据库可能为 MS-SQL。
3. 已经在应用程序的许多位置提交了一个单引号,并通过得到的错误消息确定
几个潜在的 SQL 注入漏洞。下列哪一种方法能够以最快的速度确定专门设计的输
入是否会对应用程序的处理过程造成影响?
(a) 注册一个新用户
(b) 更新个人资料
(c) 注销服务
虽然看似违背常理,但用户注册功能可能是最安全的。注册功能通常使用
INSERT 语句,如果修改这些语句,并不会影响到其他记录。用于更新个人资料
的功能可能使用条件性 UPDATE 语句,如果注入' or 1=1--之类的有效载荷,可
能会导致数据表中的所有记录遭到修改。同样,注销功能可能使用条件性 DELETE
语句,如果操作不当,也可能影响到其他用户。
也就是,我们不可能提前确定某个功能会执行哪些语句;在执行测试之前,应向
应用程序所有者警告可能导致的风险。
4. 在登录功能中发现了一个 SQL 注入漏洞,并尝试使用输入' or 1=1--来避开
登录,但攻击没有成功,生成的错误消息表明--字符串被应用程序的输入过滤删
除。如何解决这个问题?
有一种简单的方法可以达到相同的效果,即使用输入' or 'a'='a,而无需
使用注释符号。
5. 已经发现了一个 SQL 注入漏洞,但由于应用程序允许任何包含空白符的输入,
因而无法实施任何有效的攻击。如何解除这种限制?
可以使用 SQL 注释字符分隔注入的有效载荷中的关键字和其他项目。例如:
'UNIONSELECTusername,passwordFROMusers--
6. 在将其合并到 SQL 查询之前,应用程序并不配对用户输入中出现的所有单引
号。假设已经在一个数字字段中发现了一个 SQL 注入漏洞,但需要在攻击有效载
荷中使用一个字符串值。不使用单引号,如何在查询中插入字符串?
可以使用 CHAR 命令通过 ASCII 数字字符代码返回字符串。例如,在 Oracle
上,字符串 FOO 可以表示为:
CHAR(70)||CHAR(79)||CHAR(79)
7. 在极少数情况下,应用程序在用户提交的输入中使用参数化查询,以不安全
的方式建立动态 SQL 查询。什么时候会出现这种情况?
在将用户提交的输入置入查询的其他元素(如表和列名称),而非查询参数
中时,将会出现这种情况。参数化查询无法使用这些项目的占位符进行预编译,
因此需要采用不同的解决方案(可能需要基于严格的输入确认)。
8. 假设已经提升了在应用程序中的权限,现在完全拥有管理员访问权限,这时
如果在某个用户管理功能中发现了一个 SQL 注入漏洞,如何利用这个漏洞进一步
扩大攻击范围?
因为已经具有管理员访问权限,因此可以使用应用程序本身检索所需的任何
数据,也就是说,不必通过 SQL 注入攻击来获取应用程序本身的数据。但是,仍
然可以利用这种攻击来访问任何与保存在同一数据库中的其他应用程序有关的
数据,或者提升自己在数据库或基础操作系统中的权限,或者攻破数据库服务并
将攻击范围扩大到更广泛的内部网络。
9. 在攻击一个并未保存任何敏感数据、也未实施任何身份验证或访问控制机制
的应用程序的情况下,如何排列下列漏洞的重要性?
(a) SQL 注入
(b) XPath 注入
(c) OS 命令注入
XPath 注入仅可用于从目标 XML 文件中检索数据。因此,如果应用程序不包含任
何敏感数据,则这种漏洞并不会导致严重的后果。同样,利用 SQL 注入漏洞并不
能从数据库中提取任何敏感数据。但是,有时可以利用这类攻击提升在数据库中
的权限,并以其他方式实施攻击。
在某些情况下,SQL 注入漏洞可能是一个更加严重的漏洞。另一方面,OS 命令注
入则始终是一个高风险的漏洞,因为攻击者可以利用它直接攻破基础服务器,并
可将其作为针对内部系统的其他攻击的起点。
10. 假如正在检测一个允许搜索个人资料的应用程序功能,并且怀疑该功能正访
问某数据库或 Active Directory 后端。如何确定到底是哪一种情况?
如果该功能正访问数据库,则提交 SQL 通配符%作为搜索查询可能会返回大量记
录。同样,如果该功能正访问 Active Directory,则提交通配符*作为搜索查询
可能会返回大量记录。在其他系统中,这两个通配符都不会造成相同的效果。
黑客攻防技术宝典web实战篇:攻击数据存储区习题的更多相关文章
- 黑客攻防技术宝典web实战篇:利用信息泄露习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 当探查 SQL 注入漏洞时,如果请求以下 URL:https://wahh-app.com ...
- 黑客攻防技术宝典web实战篇:测试后端组件习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 某网络设备提供用于执行设备配置的 Web 界面.为什么这种功能通常易于受到操作系统命令注入 ...
- 黑客攻防技术宝典web实战篇:解析应用程序习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 当解析一个应用程序时,会遇到以下 URL:https://wahh-app.com/Coo ...
- 黑客攻防技术宝典web实战篇:测试后端组件习题答案
随书答案. 某网络设备提供用于执行设备配置的 Web 界面.为什么这种功能通常易于受 到操作系统命令注入攻击? 用于配置网络设备的应用程序通常包含使用正常的 Web 脚本 API 无法轻松实 现的功能 ...
- 《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序
读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况. Web应用程序的发展历程 早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检 ...
- 黑客攻防技术宝典web实战篇:核心防御机制习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 黑客攻防技术宝典web实战篇是一本非常不错的书,它的著作人之一是burpsuite的作者,课后的习题值得关注 ...
- 黑客攻防技术宝典web实战篇:攻击应用程序架构习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 假设受攻击的应用程序使用两台不同的服务器:一台应用程序服务器和一台数据库服务器.已经发现一 ...
- 黑客攻防技术宝典web实战篇:攻击其他用户习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 在应用程序的行为中,有什么“明显特征”可用于确定大多数 XSS 漏洞? 用户提交的输入在应 ...
- 黑客攻防技术宝典Web实战篇(三)web攻击方式总结
web攻击的手段无非就是使服务器资源耗尽,使服务器无法接收正常请求. 一.DDos攻击 二.DRDos攻击 三.慢攻击 与Ddos攻击相反,慢攻击并不是以多取胜,而是靠保持连接.
- 黑客攻防技术宝典web实战篇:攻击本地编译型应用程序习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 如果不采用特殊的防御措施,为什么栈缓冲区溢出比堆溢出更容易被攻击者利用? 利用基于栈的溢出 ...
随机推荐
- java开始到熟悉60
本次主题:多维数组 1,多维数组的初始话有三种:默认初始化.静态初始化.动态初始化. 这里只讲解静态初始化: 这里以二位数组为例,实际应用中,一维用得最多,二维次之,三维以及三维以上几乎很少使用,而且 ...
- 【转载】一分钟了解两阶段提交2PC(运营MM也懂了)
上一期分享了"一分钟了解mongoDB"[回复"mongo"阅读],本期将分享分布式事务的一种实现方式2PC. 一.概念 二阶段提交2PC(Two phase ...
- WebService Get/Post/Soap 方式请求
import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.InputStream; im ...
- netty5源代码探索(一)----ByteBuf初探
Netty的各种简单介绍,总体架构就不介绍了,假设大家感觉的确须要,给我留言我再追加. 这里再推广一个自己做得netty+spring的集成方案,优化netty配置启动,并提供基础server搭建的配 ...
- rtsp 播放器
http://blog.csdn.net/niu_gao/article/details/7753672 /********************************************** ...
- <十二>读<<大话设计模式>>之状态模式
对于状态模式,<<大话设计模式>>是以人从上班到下班到加班的状态来展开讲述的.状态模式事实上就是某一个对象在某个过程或者时间的一个状态记录,可是这个状态的顺序不能发生变化.在程 ...
- MySQL(6)--复制,docker容器中
MySQL5.7.11实现replication 启动两个安装好mysql的空的docker image ----------------- shell1 master $docker run -i ...
- Smoke testing (software)
Smoke testing (software) - Wikipedia https://en.wikipedia.org/wiki/Smoke_testing_(software) In compu ...
- 小程序 swiper banner 图片 居中
var imgUrlApp = getApp().globalData.imgUrlApp; Page({ /** * 页面的初始数据 */ data: { indicatorDots: true, ...
- iOS UI控件之间的关系图