渗透测试工程师面试经验总结

可以通过一些物理系统生成随机数,如电压的波动、磁盘磁头读/写时的寻道时间、空中电磁波的噪声等。

Jsonp安全攻防技术,怎么写Jsonp的攻击页面?

涉及到Jsonp的安全攻防内容:JSON劫持、Callback可定义、JSONP内容可定义、Content-type不为json。

攻击页面

JSON劫持,跨域劫持敏感信息,页面类似于:

function wooyun(v){
    alert(v.username);
}

Content-type不正确情况下,JSONP和Callback内容可定义可造成XSS。JSONP和FLASH及其他的利用参照知道创宇的JSONP安全攻防技术。

XSS,能打到后台,但是后台系统处于内网,怎么做内网探测?

简单的方法是使用beef得到一个shell,然后结合msf使用。

宽字节注入产生原理以及根本原因?

产生原理:

在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此\转义符号会被前面的bf带着呗"吃掉",单引号由此逃逸出来可以用来闭合语句。

根本原因:

character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding使用不当。

解决办法:

统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。
或对数据进行正确的转义,如mysql_real_escape_string+mysql_set_charset的使用。

sql注入中,盲注是什么?怎么盲注?

盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。

盲注的手段有两种:

  • 一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。
  • 一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),在这里,可以用benchmark,sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。

XSS蠕虫的产生条件

正常情况下,一个是产生XSS点的页面不属于self页面,用户之间产生交互行为的页面,都可能造成XSS Worm的产生。不一定需要存储型XSS(这次面试踩的坑)。

SSL握手过程

建立TCP连接、客户端发送SSL请求、服务端处理SSL请求、客户端发送公共密钥加密过的随机数据、服务端用私有密钥解密加密后的随机数据并协商暗号、服务端跟客户端利用暗号生成加密算法跟密钥key、之后正常通信。

这部分本来是忘了的,但是之前看SSL Pinning的时候好像记了张图在脑子里,挣扎半天还是没敢确定,遂放弃。。。

总结与反思:

基本问的大部分问题都有印象,但是当时在面试的时候却回答的不是很理想。事后想想有几个原因:

一是紧张,在面试官提问后到回答的一段时间中无法正常冷静思考。

二是对这次面试的准备不充分,本来打算看书复习的计划并没有在这之前进行完,很多专业词汇想不起来。还有就是有很多书中的基础部分在前面看的时候可能没太注意或者没彻底明白,一些知识点就掌握得很模糊,能知道个大概,具体去怎么描述却不知道怎么描述。

最后就是知识网络的分散,之前没对这方面有过整合。做的无非也是针对某个知识点,某个漏洞情况进行一些相关零碎知识的收集。对比前辈的回答,思路清晰,知识面扩展广、完善,相对来说我的回答只针对于面试官问的那一个漏洞,那一种情况,这是境界的差别。

接下来就打算重新看书,加上另一个vps上的知识总结,构造自己的知识网络,把已经掌握的知识点扩充到面。

总之,这次面试情况有点不尽人意,但是也从这次面试和前辈的沟通中学到了比面试结果更重要的东西。多想,细思考。

上一页12下一页


留言