猫宁!!!

参考链接: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实战篇:攻击数据存储区习题的更多相关文章

  1. 黑客攻防技术宝典web实战篇:利用信息泄露习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 当探查 SQL 注入漏洞时,如果请求以下 URL:https://wahh-app.com ...

  2. 黑客攻防技术宝典web实战篇:测试后端组件习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 某网络设备提供用于执行设备配置的 Web 界面.为什么这种功能通常易于受到操作系统命令注入 ...

  3. 黑客攻防技术宝典web实战篇:解析应用程序习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 当解析一个应用程序时,会遇到以下 URL:https://wahh-app.com/Coo ...

  4. 黑客攻防技术宝典web实战篇:测试后端组件习题答案

    随书答案. 某网络设备提供用于执行设备配置的 Web 界面.为什么这种功能通常易于受 到操作系统命令注入攻击? 用于配置网络设备的应用程序通常包含使用正常的 Web 脚本 API 无法轻松实 现的功能 ...

  5. 《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序

    读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况. Web应用程序的发展历程 早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检 ...

  6. 黑客攻防技术宝典web实战篇:核心防御机制习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 黑客攻防技术宝典web实战篇是一本非常不错的书,它的著作人之一是burpsuite的作者,课后的习题值得关注 ...

  7. 黑客攻防技术宝典web实战篇:攻击应用程序架构习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 假设受攻击的应用程序使用两台不同的服务器:一台应用程序服务器和一台数据库服务器.已经发现一 ...

  8. 黑客攻防技术宝典web实战篇:攻击其他用户习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 在应用程序的行为中,有什么“明显特征”可用于确定大多数 XSS 漏洞? 用户提交的输入在应 ...

  9. 黑客攻防技术宝典Web实战篇(三)web攻击方式总结

    web攻击的手段无非就是使服务器资源耗尽,使服务器无法接收正常请求. 一.DDos攻击 二.DRDos攻击 三.慢攻击 与Ddos攻击相反,慢攻击并不是以多取胜,而是靠保持连接.

  10. 黑客攻防技术宝典web实战篇:攻击本地编译型应用程序习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 如果不采用特殊的防御措施,为什么栈缓冲区溢出比堆溢出更容易被攻击者利用? 利用基于栈的溢出 ...

随机推荐

  1. 【iOS】KVC 与 KVO

    一.KVC与KVO *"KVC":key value Coding(键值编码) *目的:间接的改动或获取对象的属性,减少程序(类与类)之间的耦合度. *"KVO" ...

  2. 手机号码归属地查询免费api接口代码

    依据手机号码查询用户的卡类型.运营商.归属地.区域等信息. 手机归属地实体类 package org.wx.xhelper.model; /** * 手机归属地 * @author wangxw * ...

  3. POJ 2378 Tree Cutting 子树统计

    题目大意:给出一棵树.将树中的一个节点去掉之后,这棵树会分裂成一些联通块.求去掉哪些点之后.全部联通块的大小不超过全部节点的一半.并按顺序输出. 思路:基础的子树统计问题,仅仅要深搜一遍就能够出解.这 ...

  4. Oracle核心技术 笔记(该书读得不细致,须要找时间再细读~~)

    Oracle核心技术 跳转至: 导航. 搜索 文件夹 1 開始 2 redo和undo 3 事务与一致性 4 锁与闩 5 缓存和复制 6 写入和恢复 7 解析与优化 8 RAC及'缺陷' 9 附录A ...

  5. php浏览次数累加代码

    <?php $count=0; if(file_exists("count.txt")) //判断是否存在count.txt文件 { $count=file_get_cont ...

  6. SpringInAction4笔记——web

    1,java配置 extends AbstractAnnotationConfigDispatcherServletInitializer public class SpitterWebInitial ...

  7. dubbo简单配置与使用

    dubbo简介 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时 ...

  8. hadoop yarn namenode datanoe 启动异常问题解决 分析日志

    cat logs/hadoop-root-datanode-hadoop1.log ********************************************************** ...

  9. CSS3 (二)

    translate() 方法 通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数: 示例: div { transform: ...

  10. Immutable学习及 React 中的实践

    为什么用immutable.js呢.有了immutable.js可以大大提升react的性能. JavaScript 中的对象一般是可变的(Mutable),因为使用了引用赋值,新的对象简单的引用了原 ...