猫宁!!!

参考链接: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. 【转载】关于Hash

    这个HASH算法不是大学里数据结构课里那个HASH表的算法.这里的HASH算法是密码学的基础,比较常用的有MD5和SHA,最重要的两条性质,就是不可逆和无冲突.所谓不可逆,就是当你知道x的HASH值, ...

  2. 【转载】5种网络IO模型

    同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出 ...

  3. Here is the reason why Fengguang turns from ipmitool to freeipmi

    http://ipmitool.sourceforge.net/ Last updated Thu Apr 26 09:08:52 PDT 2007 Revision 1.21 · Home· Dow ...

  4. 你的以太网速度足够快吗?四种更快的速度正在路上······

    以太网的未来将远远超越下一个最快速度:为无处不在的网络协议绘制路径的网络project师们正在寻找新版本号来服务于各种应用程序. 在上周六的以太网联盟(一个行业组织,用于促进IEEE以太网标准)会议上 ...

  5. monitor and move the log content to our big data system

    Apache Flume HDFS Sink Tutorial | HowToProgram https://howtoprogram.xyz/2016/08/01/apache-flume-hdfs ...

  6. monggodb 复制集 集群 搭建

    https://docs.mongodb.com/manual/tutorial/enable-authentication/ Overview Enabling access control on ...

  7. MM02函数

    ATA: ls_headdata LIKE bapimathead, ls_clientdata LIKE bapi_mara, ls_clientdatax LIKE bapi_marax, ls_ ...

  8. [译]Flutter JSON和序列化

    [译]Flutter JSON和序列化   很难想象一个移动应用程序不需要与Web服务器通信或在某些时候容易存储结构化数据.制作网络连接的应用程序时,迟早需要消耗一些好的旧JSON. 本指南介绍了如何 ...

  9. UIView局部点击

    今天上班遇到一种情况,需要局部响应点击事件,比如在一个UIImageView中设置一个小圆圈图片,要求点击圆圈里面不响应点击,点击小圆圈外面的部分响应点击.可以通过重写hitTest:withEven ...

  10. react native 之 redux

    第一章  认识redux 说的通俗且直白一点呢,就是redux提供了一个store,独立的一个内存区,然后放了一些state,你可以在任何component中访问到state,这些state要更改怎么 ...