学习先从电脑基础开始
软件方面:
1、操作系统的基本操作使用;
2、输入法的使用;
3、网络应用;
4、多媒体应用;
5、基本办公软件的使用;
6、系统的安装方法;
7、应用软件的安装方法。
硬件方面:
1、电脑的基本组成;
2、电脑设备的连接;
3、常见外设的使用;
4、常见硬件问题的判断与解决。
标签语言必然要掌握,然后脚本语言,编程语言可以不用掌握也可以去学习,方向有很多web渗透-逆向破解等等,mySQL Access是必要经常用到的数据库,学习脚本语言的时候必然会要掌握。书籍web前端黑客揭秘、Metasploit渗透测试指南、xss跨站脚本攻击剖析与防御、白帽子讲web安全、游戏外挂攻防艺术、经典密码学与现代密码学、这些书籍如果你连电脑基础都没掌握的话空派你都看不懂买了你也看不懂。有偿教学扣1321-508-505
Web开发常见的几个漏洞解决方法
平时工作,多数是开发Web项目,由于一般是开发内部使用的业务系统,所以对于安全性一般不是看的很重,基本上由于是内网系统,一般也很少会受到攻击,但有时候一些系统平台,需要外网也要使用,这种情况下,各方面的安全性就要求比较高了,所以往往会交付给一些专门做安全测试的第三方机构进行测试,然后根据反馈的漏洞进行修复,如果你平常对于一些安全漏洞不够了解,那么反馈的结果往往是很残酷的,迫使你必须在很多细节上进行修复完善。本文主要根据本人项目的一些第三方安全测试结果,以及本人针对这些漏洞问题的修复方案,介绍在这方面的一些经验,希望对大家有帮助。
基本上,参加的安全测试(渗透测试)的网站,可能或多或少存在下面几个漏洞:SQL注入漏洞、跨站脚本攻击漏洞、登陆后台管理页面、IIS短文件/文件夹漏洞、系统敏感信息泄露。
1、测试的步骤及内容
这些安全性测试,据了解一般是先收集数据,然后进行相关的渗透测试工作,获取到网站或者系统的一些敏感数据,从而可能达到控制或者破坏系统的目的。
第一步是信息收集,收集如IP地址、DNS记录、软件版本信息、IP段等信息。可以采用方法有:
1)基本网络信息获取;
2)Ping目标网络得到IP地址和TTL等信息;
3)Tcptraceroute和Traceroute 的结果;
4)Whois结果;
5)Netcraft获取目标可能存在的域名、Web及服务器信息;
6)Curl获取目标Web基本信息;
7)Nmap对网站进行端口扫描并判断操作系统类型;
8)Google、Yahoo、Baidu等搜索引擎获取目标信息;
9)FWtester 、Hping3 等工具进行防火墙规则探测;
10)其他。
第二步是进行渗透测试,根据前面获取到的数据,进一步获取网站敏感数据。此阶段如果成功的话,可能获得普通权限。采用方法会有有下面几种
1)常规漏洞扫描和采用商用软件进行检查;
2)结合使用ISS与Nessus等商用或免费的扫描工具进行漏洞扫描;
3)采用SolarWinds对网络设备等进行搜索发现;
4)采用Nikto、Webinspect等软件对Web常见漏洞进行扫描;
5)采用如AppDetectiv之类的商用软件对数据库进行扫描分析;
6)对Web和数据库应用进行分析;
7)采用WebProxy、SPIKEProxy、Webscarab、ParosProxy、Absinthe等工具进行分析;
8)用Ethereal抓包协助分析;
9)用Webscan、Fuzzer进行SQL注入和XSS漏洞初步分析;
10)手工检测SQL注入和XSS漏洞;
11)采用类似OScanner的工具对数据库进行分析;
12)基于通用设备、数据库、操作系统和应用的攻击;采用各种公开及私有的缓冲区溢出程序代码,也采用诸如MetasploitFramework 之类的利用程序集合。
13)基于应用的攻击。基于Web、数据库或特定的B/S或C/S结构的网络应用程序存在的弱点进行攻击。
14)口令猜解技术。进行口令猜解可以采用 X-Scan、Brutus、Hydra、溯雪等工具。
第三步就是尝试由普通权限提升为管理员权限,获得对系统的完全控制权。在时间许可的情况下,必要时从第一阶段重新进行。采用方法
1)口令嗅探与键盘记录。嗅探、键盘记录、木马等软件,功能简单,但要求不被防病毒软件发觉,因此通常需要自行开发或修改。
2)口令破解。有许多著名的口令破解软件,如 L0phtCrack、John the Ripper、Cain 等
以上一些是他们测试的步骤,不过我们不一定要关注这些过程性的东西,我们可能对他们反馈的结果更关注,因为可能会爆发很多安全漏洞等着我们去修复的。
2、SQL注入漏洞的出现和修复
1)SQL注入定义:
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入有时候,在地址参数输入,或者控件输入都有可能进行。如在链接后加入’号,页面报错,并暴露出网站的物理路径在很多时候,很常见,当然如果关闭了Web.Config的CustomErrors的时候,可能就不会看到。
另外,Sql注入是很常见的一个攻击,因此,如果对页面参数的转换或者没有经过处理,直接把数据丢给Sql语句去执行,那么可能就会暴露敏感的信息给对方了。如下面两个页面可能就会被添加注入攻击。
①http://xxx.xxx.xxx/abc.asp?p=YY and (select top 1 name from TestD ... type='U' and status0)0 得到第一个用户建立表的名称,并与整数进行比较,显然abc.asp工作异常,但在异常中却可以发现表的名称。假设发现的表名是xyz,则
②http://xxx.xxx.xxx/abc.asp?p=YY and (select top 1 name from TestDB.dbo.sysobjects ... tatus0 and name not in('xyz'))0 可以得到第二个用户建立的表的名称,同理就可得到所有用建立的表的名称。
为了屏蔽危险Sql语句的执行,可能需要对进行严格的转换,例如如果是整形的,就严格把它转换为整数,然后在操作,这样可以避免一些潜在的危险,另外对构造的sql语句必须进行Sql注入语句的过滤,如我的框架(Winform开发框架、Web开发框架等)里面就内置了对这些有害的语句和符号进行清除工作,由于是在基类进行了过滤,因此基本上子类都不用关心也可以避免了这些常规的攻击了。
/// summary
/// 验证是否存在注入代码(条件语句)
/// /summary
/// param name="inputData"/param
public bool HasInjectionData(string inputData)
{
if (string.IsNullOrEmpty(inputData))
return false;
//里面定义恶意字符集合
//验证inputData是否包含恶意集合
if (Regex.IsMatch(inputData.ToLower(), GetRegexString()))
{
return true;
}
else
{
return false;
}
}
/// summary
/// 获取正则表达式
/// /summary
/// returns/returns
private static string GetRegexString()
{
//构造SQL的注入关键字符
string[] strBadChar =
{
//"select\\s",
//"from\\s",
"insert\\s",
"delete\\s",
"update\\s",
"drop\\s",
"truncate\\s",
"exec\\s",
"count\\(",
"declare\\s",
"asc\\(",
"mid\\(",
"char\\(",
"net user",
"xp_cmdshell",
"/add\\s",
"exec master.dbo.xp_cmdshell",
"net localgroup administrators"
};
//构造正则表达式
string str_Regex = ".*(";
for (int i = 0; i strBadChar.Length - 1; i++)
{
str_Regex += strBadChar[i] + "|";
}
str_Regex += strBadChar[strBadChar.Length - 1] + ").*";
return str_Regex;
}
上面的语句用于判别常规的Sql攻击字符,我在数据库操作的基类里面,只需要判别即可,如下面的一个根据条件语句查找数据库记录的函数。
/// summary
/// 根据条件查询数据库,并返回对象集合
/// /summary
/// param name="condition"查询的条件/param
/// param name="orderBy"自定义排序语句,如Order By Name Desc;如不指定,则使用默认排序/param
/// param name="paramList"参数列表/param
/// returns指定对象的集合/returns
public virtual ListT Find(string condition, string orderBy, IDbDataParameter[] paramList)
{
if (HasInjectionData(condition))
{
LogTextHelper.Error(string.Format("检测出SQL注入的恶意数据, {0}", condition));
throw new Exception("检测出SQL注入的恶意数据");
}
...........................
}
以上只是防止Sql攻击的一个方面,还有就是坚持使用参数化的方式进行赋值,这样很大程度上减少可能受到SQL注入攻击。
Database db = CreateDatabase();
DbCommand command = db.GetSqlStringCommand(sql);
command.Parameters.AddRange(param);
3、跨站脚本攻击漏洞出现和修复
跨站脚本攻击,又称XSS代码攻击,也是一种常见的脚本注入攻击。例如在下面的界面上,很多输入框是可以随意输入内容的,特别是一些文本编辑框里面,可以输入例如scriptalert('这是一个页面弹出警告');/script这样的内容,如果在一些首页出现很多这样内容,而又不经过处理,那么页面就不断的弹框,更有甚者,在里面执行一个无限循环的脚本函数,直到页面耗尽资源为止,类似这样的攻击都是很常见的,所以我们如果是在外网或者很有危险的网络上发布程序,一般都需要对这些问题进行修复。
XSS代码攻击还可能会窃取或操纵客户会话和 Cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。
[建议措施]
清理用户输入,并过滤出 JavaScript 代码。我们建议您过滤下列字符:
[1] (尖括号)
[2] "(引号)
[3] '(单引号)
[4] %(百分比符号)
[5] ;(分号)
[6] ()(括号)
[7] ( 符号)
[8] +(加号)
为了避免上述的XSS代码攻击,解决办法是可以使用HttpUitility的HtmlEncode或者最好使用微软发布的AntiXSSLibrary进行处理,这个更安全。
微软反跨站脚本库(AntiXSSLibrary)是一种编码库,旨在帮助保护开发人员保护他们的基于Web的应用不被XSS攻击。
编码方法
使用场景
示例
HtmlEncode(String)
不受信任的HTML代码。 a href=”http://www.cnblogs.com”Click Here [不受信任的输入]/a
HtmlAttributeEncode(String)
不受信任的HTML属性
hr noshade size=[不受信任的输入]
JavaScriptEncode(String)
不受信任的输入在JavaScript中使用
script type=”text/javascript”
…
[Untrusted input]
…
/script
UrlEncode(String)
不受信任的URL
a href=”http://cnblogs.com/results.aspx?q=[Untrusted input]”Cnblogs.com/a
VisualBasicScriptEncode(String)
不受信任的输入在VBScript中使用
script type=”text/vbscript” language=”vbscript”
…
[Untrusted input]
…
/script
XmlEncode(String)
不受信任的输入用于XML输出
xml_tag[Untrusted input]/xml_tag
XmlAttributeEncode(String)
不 受信任的输入用作XML属性
xml_tag attribute=[Untrusted input]Some Text/xml_tag
protected void Page_Load(object sender, EventArgs e)
{
this.lblName.Text = Encoder.HtmlEncode("scriptalert('OK');/SCRIPT");
}
例如上面的内容,赋值给一个Lable控件,不会出现弹框的操作。
但是,我们虽然显示的时候设置了转义,输入如果要限制它们怎么办呢,也是使用AntiXSSLibrary里面的HtmlSanitizationLibrary类库Sanitizer.GetSafeHtmlFragment即可。
protected void btnPost_Click(object sender, EventArgs e)
{
this.lblName.Text = Sanitizer.GetSafeHtmlFragment(txtName.Text);
}
这样对于特殊脚本的内容,会自动剔除过滤,而不会记录了,从而达到我们想要的目的。
4、IIS短文件/文件夹漏洞出现和修复
通过猜解,可能会得出一些重要的网页文件地址,如可能在/Pages/Security/下存在UserList.aspx和MenuList.aspx文件。
[建议措施]
1)禁止url中使用“~”或它的Unicode编码。
2)关闭windows的8.3格式功能。
修复可以参考下面的做法,或者找相关运维部门进行处理即可。
http://sebug.net/vuldb/ssvid-60252
http://webscan.360.cn/vul/view/vulid/1020
http://www.bitscn.com/network/security/200607/36285.html
5、系统敏感信息泄露出现和修复
如果页面继承一般的page,而没有进行Session判断,那么可能会被攻击者获取到页面地址,进而获取到例如用户名等重要数据的。
一般避免这种方式是对于一些需要登录才能访问到的页面,一定要进行Session判断,可能很容易给漏掉了。如我在Web框架里面,就是继承一个BasePage,BasePage 统一对页面进行一个登录判断。
public partial class UserList : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
...............
/// summary
/// BasePage 集成自权限基础抽象类FPage,其他页面则集成自BasePage
/// /summary
public class BasePage : FPage
{
/// summary
/// 默认构造函数
/// /summary
public BasePage()
{
this.IsFunctionControl = true;//默认页面启动权限认证
}
/// summary
/// 检查用户是否登录
/// /summary
private void CheckLogin()
{
if (string.IsNullOrEmpty(Permission.Identity))
{
string url = string.Format("{0}/Pages/CommonPage/Login.aspx?userRequest={1}",
Request.ApplicationPath.TrimEnd('/'), HttpUtility.UrlEncode(Request.Url.ToString()));
Response.Redirect(url);
}
}
/// summary
/// 覆盖HasFunction方法以使权限类判断是否具有某功能点的权限
/// /summary
/// param name="functionId"/param
/// returns/returns
protected override bool HasFunction(string functionId)
{
CheckLogin();
bool breturn = false;
try
{
breturn = Permission.HasFunction(functionId);
}
catch (Exception)
{
Helper.Alerts(this, "BasePage调用权限系统的HasFunction函数出错");
}
return breturn;
}
protected override void OnInit(EventArgs e)
{
Response.Cache.SetNoStore(); //清除缓存
base.OnInit(e);
CheckLogin();
}
否则可能会受到攻击,并通过抓包软件发现页面数据,获得一些重要的用户名或者相关信息。
还有一个值得注意的地方,就是一般这种不是很安全的网络,最好要求输入比较复杂一点的密码(强制要求),例如不能全部是数字密码或者不能是纯字符,对位数也要求多一点,因为很多人输入12345678,123456,123这样的密码,很容易被猜出来并登录系统,造成不必要的损失。
6、总结性建议
针对上面发现的问题,提出下面几条建议。
1)在服务器与网络的接口处配置防火墙,用于阻断外界用户对服务器的扫描和探测。
2)限制网站后台访问权限,如:禁止公网IP访问后台;禁止服务员使用弱口令。
3)对用户输入的数据进行全面安全检查或过滤,尤其注意检查是否包含SQL 或XSS特殊字符。这些检查或过滤必须在服务器端完成。
4)关闭windows的8.3格式功能。
5)限制敏感页面或目录的访问权限。
赶忙再去通过抓包,改包,重放这个过程,将昵称改为xss平台的收信脚本,然后重现这个过程,发现居然可以打到cookie,而且cookie中包含了百度账号最关键的BDUSS字段,该字段是百度账号
什么是渗透测试?
渗透测试,是渗透测试工程师完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标网络、主机、应用的安全作深入的探测,发现系统最脆弱的环节。
如何进行Web渗透测试?
完整web渗透测试框架当需要测试的web应用数以千计,就有必要建立一套完整的安全测试框架,流程的最高目标是要保证交付给客户的安全测试服务质量。
1、立项:项目建立,时间安排,人力分配,目标制定,厂商接口人确定;
系统分析威胁分析:针对具体的web应用,分析系统架构、使用的组件、对外提供的接口等,以STRIDE为威胁模型进行对应的安全威胁分析,输出安全威胁分析表,重点关注top3威胁;
制定测试用例:根据威胁分析的结果制定对应的测试用例,测试用例按照模板输出,具备可执行性;
测试执行漏洞挖掘:测试用例执行发散测试,挖掘对应的安全问题or漏洞;
问题修复回归测试:指导客户应用开发方修复安全问题or漏洞,并进行回归测试,确保安全问题or漏洞得到修复,并且没有引入新的安全问题;
项目总结评审:项目过程总结,输出文档评审,相关文档归档。
2、Web应用的渗透测试流程
主要分为3个阶段,分别是:信息收集→漏洞发现→漏洞利用,下面仔细分析一下各个阶段流程:
一、信息收集
在信息收集阶段,我们需要尽量多的收集关于目标web应用的各种信息,比如:脚本语言的类型、服务器的类型、目录的结构、使用的开源软件、数据库类型、所有链接页面,用到的框架等
脚本语言的类型:常见的脚本语言的类型包括:php、asp、aspx、jsp等
测试方法:
1 爬取网站所有链接,查看后缀
2 直接访问一个不存在页面后面加不同的后缀测试
3 查看robots.txt,查看后缀
服务器的类型:常见的web服务器包括:apache、tomcat、IIS、ngnix等
测试方法:
1 查看header,判断服务器类型
2 根据报错信息判断
3 根据默认页面判断
目录的结构:了解更多的目录,可能发现更多的弱点,如:目录浏览、代码泄漏等。
测试方法
1 使用字典枚举目录
2 使用爬虫爬取整个网站,或者使用google等搜索引擎获取
3 查看robots.txt是否泄漏
使用的开源软件:我们如果知道了目标使用的开源软件,我们可以查找相关的软件的漏洞直接对网站进行测试。
测试方法
指纹识别(网络上有很多开源的指纹识别工具)
数据库类型:对于不同的数据库有不同的测试方法。
测试方法
1 使应用程序报错,查看报错信息
2 扫描服务器的数据库端口(没做NAT且防火墙不过滤时有效)
所有链接页面:这个跟前面的获取目录结构类似,但是这个不只是获取网站的所有功能页面,有时候还可以获取到管理员备份的源码。
测试方法
1 使用字典枚举页面
2 使用爬虫爬取整个网站,或者使用google等搜索引擎获取
3 查看robots.txt是否泄漏
用到的框架:很多网站都利用开源的框架来快速开发网站,所以收集网站的框架信息也是非常关键的。
测试方法
指纹识别(网络上有很多开源的指纹识别工具)
二、漏洞发现
在这个阶段我们在做测试的时候要对症下药,不能盲目的去扫描,首先要确定目标应用是否使用的是公开的开源软件,开源框架等、然后在做深一度的漏洞扫描。
关于开源软件的漏洞发现
开源的软件:常见的开源软件有wordpress、phpbb、dedecms等
开源的框架:常见的开源框架有Struts2、 Spring MVC、ThinkPHP等
中间件服务器:常见的中间件服务器有jboss、tomcat、Weblogic等
数据库服务:常见的数据库服务mssql、mysql、oracle、redis、sybase、MongoDB、DB2等
对于开源软件的测试方法
1 通过指纹识别软件判断开源软件的版本信息,针对不同的版本信息去开放的漏洞数据库查找相应版本的漏洞进行测试
2 对于默认的后台登录页、数据库服务端口认证等入口可以进行简单的暴力破解、默认口令尝试等操作
3 使用开源的漏洞发现工具对其进行漏洞扫描,如:WPScan
关于自主开发的应用
手动测试:这个阶段,我们需要手工测试所有与用户交互的功能,比如:留言、登入、下单、退出、退货、付款等操作
软件扫描:使用免费的软件扫描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp关键点
代码安全之上传文件
代码安全之文件包含
代码安全之SSRF
逻辑漏洞之密码重置
逻辑漏洞之支付漏洞
逻辑漏洞之越权访问
平台安全之中间件安全
三、漏洞利用
针对不同的弱点有不同的漏洞利用方式,需要的知识点也比较多。一般这个阶段包括两种方式,一种是手工测试,一种是工具测试
手工测试
手工测试是通过客户端或服务器访问目标服务,手工向目标程序发送特殊的数据,包括有效的和无效的输入,观察目标的状态、对各种输入的反应,根据结果来发现问题的漏洞检测技术。手工测试不需要额外的辅助工具,可由测试者独立完成,实现起来比较简单。但这种方法高度依赖于测试者,需要测试者对目标比较了解。手工测试可用于Web应用程序、浏览器及其他需要用户交互的程序。
这种方式对于有特殊过滤等操作,或者网络上没有成型的利用工具的时候可以使用。
工具测试
网络上有很多好用的免费利用工具,比如针对sql注入的sqlmap、针对软件漏洞的matesploit等。
经常看到一些网友在论坛发帖问该如何学习网络安全技术,说的直接一点就是想学习黑客攻防技术,最近有网友加我qq又谈到这个问题,今天就整理一下我的一些看法,希望对大家能有所帮助。
从98年开始接触网络安全技术到现在已经10多年了,那时候的个人电脑的系统基本都是win98,服务器基本是winnt,上网都是通过猫拨号上网,记得上网一小时4.2元。攻击方法基本就是远程控制,远程蓝屏,暴力破解密码,拒绝服务攻击等,还没有出现sql注入和社工,安全书籍中的文章大多数都是对一些软件的使用方法做介绍,用的木马基本就两个,美国死牛之祭组织出的bo2000和国产的冰河。冰河我用了很长一段时间,直到现在看到7626这个数字还觉得亲切,因为这是冰河被控制端开启的端口,手工删除冰河也很简单,找到进程中的g_server.exe关闭删除就可以了。还有个破解win98共享文件夹的软件印象也比较深刻,图标是个卡通公鸡头,破解速度很快,破解原理是系统密码认证有问题,对密码的识别不是整个字符串识别的,而是一个字符一个字符的识别,破解软件就可以根据系统返回的yes、no进行尝试。
网上不少人说要学网络安全一定要会c和c++语言,我觉得完全没必要,不是说学了没用,而是在初学阶段用处不大,甚至枯燥的学习会扼杀你的兴趣,等到技术达到了一定程度再学,会事半功倍,不少从事信息安全多年的专业人士都没有写过一行代码,一样被人称为大牛。还有人说学网络安全英语一定要好,其实你只要能认识那些常用的计算机单词就行了,当然你要考cissp除外。还有人说学网络安全一定要会unix和linux,我觉得windows就够学的了,人的精力总是有限的,不可能把所有的领域都搞得很精通,与其样样通,样样松,何不做精,在某一领域有所专长。
忘记unicode漏洞是哪年被发现了,感觉很震撼,没想到通过这种方式可以控制计算机,当时有这种漏洞的服务器到处都是,原因很简单,服务器管理者对系统补丁的重要性认识不足,没有及时安装补丁。这种漏洞的利用方式简单的讲就是通过浏览器就可以对目标计算机执行cmd命令,用的最多的命令就是dir、copy、type,用dir浏览服务器的文件目录,看到感兴趣的文件copy到虚拟目录下,然后通过浏览器下载,看到文本文件用type阅读。也可以通过tftp上传文件。
还有输入法漏洞,同样的震撼,入侵者通过远程桌面连接到目标计算机上,调出输入法,通过输入法的帮助功能,执行cmd命令,尽管是老漏洞,但同样适用于目前的一些远程接入程序,学网络安全必须做到举一反三,条条大路通罗马。
印象最深刻的远程溢出漏洞是在05年,ms05039漏洞,溢出后,用nc可以直接连上某个溢出后开启的端口,获得系统的shell权限,在互联网上成功率很高,在局域网成功率基本是99%。
没头没脑说这么多,又不能混稿费,就此打住,进入正题。初学者可以在计算机上安装vm虚拟机,vm的功能很多,需要注意的就这么几个:制作恢复快照,通过Ctrl+Alt释放虚拟机中的鼠标,安装完vm后,接着安装VMwareTools 其他就不做详细介绍了。在虚拟机中安装个win2003,安装完成后,默认设置下是可以ping通本地机的,这样一个小的网络环境就搭建好了,如果硬件允许,可以同时运行多个虚拟机,用虚拟系统进行攻防测试,不会影响到真实系统。至于都做哪些攻防测试,我觉得可以先做系统漏洞攻防,下载使用各种漏洞扫描器,进行全面扫描,根据存在的漏洞,用各种方法做入侵测试,还可以试试各种溢出攻击,掌握各种常用的cmd命令。接下来可以开启系统的iis服务,在虚拟目录中放一个漏洞百出的整站系统做web漏洞攻防,sql注入、跨站、脚本入侵等,根据获得的webshell进行提权测试。还可以在系统中安装各种应用软件,对应用软件存在的漏洞进行攻防测试。喜欢看书的朋友还可以看看《黑客x档案》、《黑客手册》、《黑客防线》,网上有部分电子版,前两本相对简单写,《黑客防线》系统底层的文章相对多些。等到各种攻防测试都做完了,可以看看一些网络基础方面的书籍,你会发现之前苦涩难懂的理论知识理解起来不是那么困难了。《TCP/IP
详解》这本书不错,卷一详细描述协议栈,同样的一本书,每个阶段看,收获是完全不一样的。《欺骗的艺术》这本书也不错,网上有电子版,看完后你会发现,社会工程学原来是门艺术。当你掌握的技术越多,就越觉得不懂的更多。
黑客工具有成千上万个,这里给大家介绍几款个人感觉不错的。x-scan,国产漏洞扫描器,优点是稳定,可扩展性强,缺点是很久没更新了,漏洞库不够新;Acunetix
Web Vulnerability
Scanner,简写wvs,是款web扫描器,优点是web漏洞扫描全面,缺点是运行速度太慢;ssport,小巧的端口扫描器,优点是扫描速度快,可以在运行中调节扫描速度,号称无级变速,缺点是有漏扫情况,占用网络资源很厉害,运行后,基本不用上网了,甚至拖垮你的局域网。不少人用s扫描器,ssport的端口扫描速度不如s扫描器,但整体来说不比s扫描器差。cain,很不错的嗅探工具,功能太多了,操作稍微有点复杂,用了cain你会发现,网络中到处都是明文密码。
如果你的时间和精力充足,又想学学编程,可以考虑学学delphi,上手快,不是有这么一句话吗:聪明的程序员用delphi,学编程对全面了解操作系统有一定的帮助。
当你学会了攻,也就明白怎么防了,防比攻更难,攻是单点突破,防是系统工程。网上不少人在收徒弟,这其中不少人是骗子,前不久看过一个所谓的黑客教学视频,制作者通过一个不带任何参数的ping命令+web扫描,只是web扫描,就击垮了一个SF服务器,看完后我也被他击垮了。最好的老师永远是你自己,只要有兴趣,多动手实践,多思考,一定会有所收获。路在何方?路永远在你脚下。最后还要说一句,不要去黑别人,因为中国有句老话:善有善报,恶有恶报。更不要以为做了几次跳板别人就找不到你了。
转载仅供参考,版权属于原作者
软件测试是对开发人员提交的软件进行测试,模拟用户使用,发现问题。它是一个系列过程活动,包括软件测试需求分析,测试计划设计、测试用例设计、执行测试等。它贯穿于软件测试项目的整个生命过程,在软件项目的每一个阶段,都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试工程师需要通过白盒测试、黑盒测试、等价类划分法、边界值方法等手段来找出程序错误,并提交给程序员修改。
那么白盒测试呢就是通过直接看代码来找bug,黑盒测试也就是手工测试,也就是在不看代码的情况下来测试功能有没有问题。灰盒测试则介于两者之间。单元测试、集成测试、系统测试则是通过不同单位进行测试。回归测试是二次测试,验收测试则是通过用户反馈来进行测试。等价类划分法、边界值方法、因果图法、判定表法、正交排列法、错误推算法、场景法编写测试用例属于功能测试,负载测试、压力测试则属于性能测试。
想要了解更具体的测试方法,来啄木鸟学院学习软件测试面授课吧。据了解,啄木鸟学院的软件测试课程还是不错的。这里的师资都是具备多年项目经验的精英,跟着他们学习,不用愁发展。另外,啄木鸟学院采用全程面授的教学方式,使你的学习效率更高。
我来说两句