Options中的CMD必选项和后面的说明。是的,这里的第2个命令的意思就是设置必选项CMD,其实设置的CMD的内容就是我们想要执行的命令。至于什么命令那就看大家的需要了!
好了最基本的设置我们已经完成,最后指明目标主机的操作系统就可以发动攻击了,输入:show targets
可以看到可供选择的操作系统类型的代表名称。接着输入:set target 0选定操作系统。我们确认一下,输入:Set,可以看到如图9所示的回显:
检查无误后就可以开始溢出了,输入Exploit 程序提示溢出开始,只不过我这次试验怎么溢出都不成功,因为对方系统早补了这个漏洞了,这里也就不把图贴出来丢人了,见谅。 图形界面下使用Metasploit
Metasploit图形界面的使用方法和命令行下没有太大的区别,只不过是操作方式的不同罢了:到Metasploit的安装目录下找到Msfweb.bat文件双击运行,一会后程序提示执行成功,如图10所示:
26
然后打开IE,在地址栏中输入http://127.0.0.1:55555等一会后看到图11所示的IE窗口:
在想要使用的溢出工具包上单击鼠标左键后进入到基本设置窗口,我们仍然以
27
iis50_webdav_ntdll为例,如图12所示:
单击“select payload”选项进入Payload选择界面,如图13所示:
28
选择合适的Payload后就进入基本信息的设定界面了,如图14所示:
29
实验五 SQL Server注入攻击
实验软件:SQLServer 注入工具v1.0 实验步骤: 一、攻击手段
1.没有正确过滤转义字符
在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞:
statement := \这种代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者所期望的那样了。例如,将用户名变量(即username)设置为:
a' or 't'='t,此时原始语句发生了变化:
SELECT * FROM users WHERE name = 'a' OR 't'='t';
如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。
在一些SQL服务器上,如在SQL Server中,任何一个SQL命令都可以通过这种方法被注入,包括执行多个语句。下面语句中的username的值将会导致删除“users”表,又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。
a';DROP TABLE users; SELECT * FROM data WHERE name LIKE '% 这就将最终的SQL语句变成下面这个样子:
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE name LIKE '%';
其它的SQL执行不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注入完全独立的查询,不过却不会阻止攻击者修改查询。
2.Incorrect type handling
如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。例如:
statement := \
从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将a_variable设置为:1;DROP TABLE users,它会将“users”表从数据库中删除,SQL语句变成:SELECT * FROM DATA WHERE id = 1;DROP TABLE users;
3.数据库服务器中的漏洞
有时,数据库服务器软件中也存在着漏洞,如MYSQL服务器中mysql_real_escape_string()函数漏洞。这种漏洞允许一个攻击者根据错误的统一字符编码执行一次成功的SQL注入式攻击。
4.盲目SQL注入式攻击
当一个Web应用程序易于遭受攻击而其结果对攻击者却不见时,就会发生所谓的盲目SQL注入式攻击。有漏洞的网页可能并不会显示数据,而是根据注入到合法语句中的逻辑语句的结果显示不同的内容。这种攻击相当耗时,因为必须为每一个获得的字节而精心构造一个新的语句。但是一旦漏洞的位置和目标信息的位置被确立以后,一种称为Absinthe的
30