2017_baidu_spring_1

请回答如下端口默认对应的服务,以及在渗透测试过程中我们可以从哪些角度考虑其安全问题。
端口:21、22、873、1433、3306、6379、11211
端口 服务 说明
21 FTP 匿名访问\弱口令
22 SSH 弱口令
873 rsync 未授权访问\弱口令
1433 mssql 弱口令
3306 mysql 弱口令
6379 redis 一般无验证,直接访问
11211 memcache 内存泄露\未授权访问

2017_baidu_spring_2

你所知道的网络抓包工具有哪些?对android或者ios设备怎么进行抓包。

tcpdump, Wireshark, Fiddler, Burp Suite, Charles
基于 WireShark 的方案:

  1. 电脑开放热点,手机端进行连接
  2. 使用 WireShark 捕获手机 IP 地址的流量

基于 tcpdump 的方案:

  1. 将 androidtcpdump 上传至 android 设备中(注:需要 root 权限)
  2. 使用 adb shell (远程 SSH 亦可)启动 tcpdump 开始捕获

基于 Fiddler/Burp Suite/Charles 的方案:

  1. 手机与电脑处于同一局域网中
  2. 手机代理填写为 Fiddler/Burp Suite/Charles 的端口
  3. 若需要捕获 HTTPS 流量包则安装软件的安全证书即可

Burp Suite 是其中唯一支持交互式操作的软件
tcpdump 需要 root 权限,其他方案都不需要
wireshark 操作最简单,分析功能最强大,可以捕获数据包后配合进行分析
Burp Suite/Charles 跨平台性最好,也足够轻量级

另外的方式是使用专门的软件,如:AndroidHttpCapture、XCode 调试器中自带的 rvictl 命令等

2017_baidu_spring_3

请说明黑客常用的清除痕迹的方式及对应的监控方法(linux和windows系统)

wtmp/wtmpx 记录每次用户登录的信息,时间\终端\IP地址(last命令)
utmp/utmpx 记录以前登录到系统中的所有用户(who命令)
lastlog 记录每个用户最近一次的时间和登录点
acct 记录用户执行的所有命令

应用服务日志 记录了应用程序和系统产生的事件
系统日志 系统自身包括驱动程序等组件产生的时间
安全日志 与安全事件相关的信息
Elsave CLearLogs LogKiller 等程序

2017_baidu_spring_4

罗列最近几年影响较大的安全漏洞并请大概介绍其原理、危害(请列举3个)
  1. XcodeGhost
    简述 2015 年 9 月,应用程序开发工具 Xcode 被篡改从而引发的安全事件称为 XcodeGhost,该事件影响近一亿 iPhone 用户,超过 800 个不同版本的 iOS App 被感染
    原理 攻击者通过向官方 Xcode 集成开发工具中加入恶意库文件,与正常库文件混在一起。同时,修改控制编译器链接行为的配置文件,致使任何 App 的编译过程都需要链接恶意库文件,从而实现经该编译器生成的 App 中均含有恶意代码。之后攻击者将被篡改的 Xcode 打包二次发布
    危害 已经确认的是可以上传基本系统信息和 APP 数据,可能造成的危害包括弹窗攻击、通过 OpenURL 操作其他应用程序等
    参考资料
  2. Mirai
    简述 2016年10月21 日晚间,北美地区大量反馈若干重要的互联网网站无法正常访问。这是一次 DDoS 网络攻击事件,攻击目标主要 是Dynamic Network Services(dyn) 公司,twitter、paypal、github 等网站作为 dyn 公司的客户,在本次攻击中不幸被波及。
    原理 攻击者的攻击手段是混合使用 DNSflood 和 synflood,本次攻击中的Syn flood部分,特征符合Mirai的流量特点,有Mirai或者其变种参与。而原始版本的mirai 在发起dns flood攻击的时候不会伪造源IP地址,本次攻击中参与 dns flood 的部分,要么这些IP地址是伪造的,那么一定不是原始版本的mirai;要么这些IP地址是真实的,那就与mirai的关系更远。
    危害 北美地区大量反馈若干重要的互联网网站无法正常访问。涉及到的网站包括 twitter, paypal,github等等
    参考资料
  3. WannaCry
    简述 2017年5月12日,WannaCry 蠕虫通过 MS17-010 漏洞在全球范围大爆发,感染了大量的计算机,该蠕虫感染计算机后会向计算机中植入敲诈者病毒,导致电脑大量文件被加密
    原理 MS17-010 漏洞利用 srv.sys 在处理 SrvOs2FeaListSizeToNt 的时候逻辑不正确导致越界拷贝。
    危害 大量计算机中招,文件被加密,勒索者要求以比特币的形式支付赎金

2017_baidu_spring_5

介绍你所知道的加密算法,都属于什么类型的加密算法?怎么保证加密的安全性?

对称加密:DES 3DES AES
DES: DES 加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。因此,破译DES加密算法实际上就是搜索密钥的编码。对于56位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为256。
非对称加密:RSA ECC
RSA : RSA 加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

2017_baidu_spring_6

```
PHP中了解有哪些容易导致漏洞的危险函数?并且简述会造成什么类型的风险
```

★ 命令注入
PHP 执行系统命令可以使用以下几个函数:system、exec、passthru、“、shell_exec、popen、proc_open、pcntl_exec,确定函数的参数是否会因为外部提交而改变,检查这些参数是否有经过安全处理
防范方法:
1. 使用自定义函数或函数库来替代外部命令的功能
2. 使用escapeshellarg 函数来处理命令参数
3. 使用safe_mode_exec_dir 指定可执行文件的路径

★ 跨站脚本
输出函数经常使用:echo、print、printf、vprintf、<%=$test%>
对于反射型跨站,因为是立即输出显示给客户端,所以应该在当前的 php 页面检查变量被客户提交之后有无立即显示,在这个过程中变量是否有经过安全检查。
对于存储型跨站,检查变量在输入后入库,又输出显示的这个过程中,变量是否有经过安全检查。
防范方法:
1. 如果输入数据只包含字母和数字,那么任何特殊字符都应当阻止
2. 对输入的数据经行严格匹配,比如邮件格式,用户名只包含英文或者中文、下划线、连字符
3. 对输出进行 HTML 编码

★ 文件包含
PHP 可能出现文件包含的函数:include、include_once、require、require_once、show_source、highlight_file、readfile、file_get_contents、fopen、 nt>file
防范方法:
1. 对输入数据进行精确匹配,比如根据变量的值确定语言 en.php、cn.php,那么这两个文件放在同一个目录下’language/’.$_POST[‘lang’].’.php’,那么检查提交的数据是否是en 或者cn 是最严格的,检查是否只包含字母也不错
2. 通过过滤参数中的/、..等字符

★ 代码注入
PHP 可能出现代码注入的函数:eval、preg_replace+/e、assert、call_user_func、call_user_func_array、create_function
防范方法:
1. 输入数据精确匹配
2. 白名单方式过滤可执行的函数

★ SQL注入
insert、delete、update、select
防范方法:
使用参数化查询

★ XPath注入
Xpath 用于操作xml,警惕提交给 xpath 函数的参数是否有经过安全处理
防范方法:
对于数据进行精确匹配

★ HTTP响应拆分
PHP 中可导致HTTP 响应拆分的情况为:使用header 函数和使用$_SERVER 变量。
防范方法:
1. 精确匹配输入数据
2. 检测输入输入中如果有\r 或\n,直接拒绝

★ 文件管理
PHP 的用于文件管理的函数,如果输入变量可由用户提交,程序中也没有做数据验证,可能成为高危漏洞。如下函数:copy、rmdir、unlink、delete、fwrite、chmod、fgetc、fgetcsv、fgets、fgetss、file、file_get_contents、fread、readfile、ftruncate、file_put_contents、fputcsv、fputs,但通常PHP 中每一个文件操作函数都可能是危险的。
防范方法:
1. 对提交数据进行严格匹配
2. 限定文件可操作的目录

★ 文件上传
PHP 文件上传通常会使用 move_uploaded_file
防范方法:
1. 使用白名单方式检测文件后缀
2. 上传之后按时间能算法生成文件名称
3. 上传目录脚本文件不可执行
4. 注意%00 截断

参考资料
拓展网站:PHP-Security

2017_baidu_spring_7

文件包含漏洞的常见WAF绕过方式(以读取/etc/passwd为例)

★ 利用phar://协议特性可以绕过一些waf检测,phar:// 数据流包装器自 PHP 5.3.0 起开始有效。
新建shell.php代码内容:

<?php
include 'phar://test.rar/test.txt';
?>

新建test.txt里的内容:

<?php
phpinfo();
?>

压缩test.txt文件,可以重命名压缩文件为zip,phar,rar等格式,之后访问shell.php文件后,会出现phpinfo内容。

★ 本地包含
新建一个phpinfo.txt,然后新建一个shell.php,写入:

<?phpInclude("phpinfo.txt");
?>

访问shell.php会输出phpinfo页面内容,无论将扩展名改为什么,都将以php代码执行。如果文件不是符合php规则的(即没有写<?php ?>等),则通过include可以直接输出源码

★ 远程包含
新建php.txt:

<?phpecho "hello world";
?>

新建index.php:

<?phpInclude($_GET['page']);
?>

访问http://www.xxxx.com/page=http://www.xxxx.com/php.txt执行结果将输出hello world。

文件包含漏洞(绕过)
文件上传漏洞(绕过)

2017_baidu_spring_8

现有一个需要注册才能使用的Android APP,打开APP时,
显示:请输入正确的序列号。如序列号不正确,提示:你输入的序列号错误。
问:如何对该APP进行分析破解,用最简单的,使之输入任意序列号即可使用。
请描述分析方法、使用工具

smali 和 baksmali 可以看做是 Android 的 assembler 和 disassembler

首先使用 JEB 打开 APP 的 APK 文件,反编译查看代码一步步跟进,静态分析吃力后使用 apktool 解开该 app 然后修改 AndroidManifest.xml 允许调试,再使用 apktool 再打包、signapk.jar 签名、baksmali 反编译,最后使用 Android Studio 进行动态调试
定位到需要更改的代码位置,代码更改后,重复上面的重新打包再签名的过程就能成功绕过序列号的判断

可以参考绿盟科技在乌云知识库上的文章《一次app抓包引发的Android分析记录》

2017_baidu_spring_9

请描述PE文件加壳、脱壳步骤?

加壳

  1. 增加壳的代码段
  2. 修改程序入口点(OEP)为壳的代码段

脱壳

  1. 判断壳的类型
  2. 寻找程序入口点(OEP)

    A. 根据跨段指令寻找
    IDA Pro中有静态的跨段指令的视图(Segment),这里是动态的,基本的办法是单步跟踪。
    B. 设置内存断点
    在代码段释放完毕后,在代码段首部设置内存断点,中断后就是OEP
    C. 根据堆栈平衡原理
    D. 根据编译语言的特点(常见的初始化函数)找OEP

  3. Dump 内存

  4. 修复 PE 文件头和输入表 IAT

参考资料

2017_baidu_spring_10

TCP三次握手的原理,并简单描述下端口扫描的几种实现方式及优缺点

三次握手原理
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

PING 扫描
向目标主机发送 ICMP 请求,如果收到了返回数据包则可以判断目标存活.但是 ICMP Ping 越来越多地被防火墙与路由器阻止.

TCP 半开放扫描
半开放扫描速度很快,可以达到每秒数千个端口.只发送一个设置 SYN 标志的数据包,等待来自目标主机的 SYN-ACK 返回数据包,而不会完成 TCP 握手过程.
收到 SYN-ACK 数据包之后可以判断端口可用/正在监听,如果收到 RST 数据包就可以判断目标存活但端口关闭了.如果你可以判断主机存活但没有得到响应,端口就应该是被过滤了.

TCP 全连接扫描
与半开放扫描相比,最后需要发送 ACK 数据包来建立连接,所以扫描速度被拖慢很多.

UDP 扫描
UDP 扫描最常见用来检测 DNS\SNMP\DHCP 服务,UDP 扫描通常是发送一个空包,也可以设置随机载荷填充.
如果目标主机返回类型3\代码3的 ICMP 无法访问错误,则可以判断端口是关闭的.如果是其他无法访问错误代码的数据包,则可以判断端口是被过滤的,如果没有收到响应数据包,则可以判断端口是打开或者被过滤的.
和任何使用 UDP 通信存在的问题一致,其不可靠.UDP 扫描都很慢,可能需要发送大量的数据包才能确认一个端口的开放性.

隐蔽扫描
NULL\FIN\X-MAS
FIN 扫描会发送一个不会真实产生的数据包,发送一个包含 FIN 标志的数据包但不先建立连接,如果收到 RST 数据包则端口是关闭的,如果没有收到数据包则端口是开放的
X-MAS 扫描设置 URG\PUSH\FIN 标志,如果没有收到数据包,端口是开放的,如果收到 RST 数据包,端口是关闭的
NULL 扫描也会发送一个不会真实产生的数据包,不设置 TCP 数据包的任何标志,如果收到 RST 数据包,端口是关闭的,如果没有收到相应数据包,是一个开放的端口.
这些扫描都尝试让目标主机产生某种类型的响应而不通过握手来建立连接,隐身扫描也意味着它们不会出现在日志中

SCTP INIT 扫描
SCTP INIT 扫描是 TCP SYN 扫描在 SCTP 上的等价物,同样可以快速执行,在不受防火墙限制的情况下每秒扫描数千个端口,只发送一个 INIT 块,等待一个响应

nmap 官网上有关于 nmap 实现很棒的阐述

2017_baidu_spring_11

有N个大小不等的自然数(1–N),乱序存于数组从1到n下标的空间中,请将它们由小到大排序,不能直接赋值或输出。
要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。

数据结构中常用的排序算法如下:

可见并没有满足条件的算法

void sort(int e[], int n)
{int i;int t; /*临时变量:空间复杂度O(1)*/for (i=1; i<n+1; i++) /*时间复杂度O(n)*/{while(e[i]!=i){j++;t = e[e[i]]; /*下标为e[i]的元素,排序后其值就是e[i]*/e[e[i]] = e[i];e[i] = t;}}
}

2017_baidu_spring_12

对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。
如:17!=355687428096000,尾部连续0的个数是3。
(不用考虑数值超出计算机整数界限的问题

2*5即可得到0,则N!可以表示为k*(2^m)(5^n),由于在N!中m>>n,因此N!=k’(2*5)^n,即n为尾部为0的个数。
由此,我们只要考虑N!中包含多少个5的倍数就可以了,如25,含有5,10,15,20,25,包含6个5的倍数,即25!尾部有6个0。
n=N/5+N/(5^2)+N/(5^3)….+N/(5^k) (k<=N/5)

时间复杂度:O(log5N)

#include <iostream>using namespace std;long long NumOfZero(long long n)
{long long count=0;while(n>0){count+=n/5;n=n/5;}return count;
}long long factorial(long long n)
{if(n==1)return 1;return n*factorial(n-1);
}int main()
{long long n=20;cout<<NumOfZero(n)<<endl;cout<<factorial(n)<<endl;return 0;
}

参考资料

2017_baidu_spring_13

从其他渠道获知A站被黑,同时黑客上传了webshell(是否被黑客删除未知),
该服务器上没有任何安全防御措施,只有web访问日志。
假如你是安全工程师小王,请你说明如何排查快速定位问题点,
同时设计有效的安全防御系统,防范类似情况发生,
防御系统至少包括sql注入、上传webshell等高危漏洞的防御措施。

溯源

  1. 首先用开源web漏扫工具检查一遍,看是否有典型的 SQL 注入等 OWSAP10 漏洞
  2. 对于 web 网站查看是否采用主流的框架或者一些第三方框架,判断是否是框架本身带来的漏洞
  3. 对 web 日志进行分析,筛选出可疑的访问页面,一般来说这样的 webshell 的大小、名称都很小,且它的出度仅为 1,也就是主控端跟它联系,所以经过对比完全可以发现可疑的文件;

防御
可以在网站前加一层软 WAF,资金允许的话,可以买一些 WAF 设备,也可以手工进行一些简单的防御,包括参数化语句、转义、设置白名单等,控制各级目录的读写权限,密码的复杂化,添加验证码等,时刻关注网站所用框架的通用漏洞,及时打补丁等等

2017-百度-安全岗笔试相关推荐

  1. 2017百度实习生招聘笔试真题编程题集合

    1,买帽子 AC代码如下: import java.util.HashSet; import java.util.Scanner; import java.util.Set; import java. ...

  2. HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))

    Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. IT:银行类金融科技岗笔试习题集合—各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理)

    IT:银行类金融科技岗笔试习题集合-各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理) 导读:因为博主后台留言太 ...

  4. Interview:算法岗位面试—11.05下午上海某银行信息(总行,四大行之一)技术岗笔试记录

    Interview:算法岗位面试-11.05下午上海某银行信息(总行,四大行之一)技术岗笔试记录 导读:这次记住了上次银行考试的教训,提前选择了离着学校较近的考点.这次笔试比上次银行考试相对简单,但是 ...

  5. Interview:算法岗位面试—11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录

    ML岗位面试:11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录 Interview:算法岗位面试-11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录 导读:预约考点的 ...

  6. 2017百度之星程序设计大赛 - 复赛 01,03,05

    Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  7. 2017百度AI开发者大会召开,智能云计算分论坛聚焦ABC

    7月5日, 2017百度AI开发者大会智能云计算分论坛在北京国家会议中心召开.百度总裁张亚勤,百度副总裁.百度云总经理尹世明,英特尔人工智能集团CTO Amir Khosrowshahi,英伟达中国区 ...

  8. 2017百度世界大会 | 爱奇艺创始人CEO龚宇演讲速记

    2017百度世界大会如期而来.(好像不对,Robin 说往年都是夏季办)那就改成千呼万唤始出来. 以下是爱奇艺创始人CEO龚宇演讲实录,小编全文呈上,请各位查收: 各位来宾,大家好! 很高兴今天再次来 ...

  9. B站哔哩哔哩21届秋招算法岗笔试 假设货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小明使用1024元的纸币购买了一件价值为N(0<N<=1024)的商品

    哔哩哔哩21届秋招算法岗笔试 题目描述: 假设货币系统包含面值1元.4元.16元.64元共计4种硬币,以及面值1024元的纸币.现在小明使用1024元的纸币购买了一件价值为N(0<N<=1 ...

  10. 2011百度实习生招聘笔试试题---软件测试—测试方向(BJ)

    2011百度实习生招聘笔试试题---软件测试-测试方向(BJ) 来源: 周广陵的日志 第一大题  简答题 1.extern"C"{}是什么,它能起到什么作用? 2.介绍两种经典设计 ...

最新文章

  1. “面试不败计划”:集合总结
  2. 攻防世界(pwn) level3
  3. VTK:PolyData之AttachAttributes
  4. PMP之项目资源管理---激励理论
  5. android c 对象为空,ndk-jni中C/C++接口函数修改函数参数jobject对象成员值(数组)的有关问题...
  6. linux内核关闭tcp校验,linux内核tcp调优规范与方案
  7. Ubuntu下使用UFW配置防火墙(简化iptables的操作)
  8. 鸿蒙手机发布失败,华为:没有推出鸿蒙手机计划,「自拍」会让人觉得你孤独和失败...
  9. 字符串属性和函数的使用
  10. 楼道声光控灯闪烁_照明灯闪烁其中一个原因就是它
  11. jquery和ajax实战教程电子书,《jQuery和Ajax实战教程》邵山欢_孔网
  12. android大作业计算器,2015大作业简易计算器实验报告.doc
  13. 学ASP.NET入门编程,合适么?
  14. 如何写出高分essay?高分essay文章结构分析
  15. Circuit Breaker模式
  16. JAVA毕业设计共享充电宝管理系统演示录像2021计算机源码+lw文档+系统+调试部署+数据库
  17. 高校wifi认证登录
  18. 今日头条街拍图片下载
  19. 欢迎报名2021年湖北省中小学电脑制作活动无人机编程赛项
  20. 企业推广常用的网络推广方法有哪些?

热门文章

  1. C语言编程>第三周 ⑤ 对10个数进行排序。
  2. Python_4_内置结构-元组-字符串-bytes-bytearray-切片
  3. Fortran语法汇总(上)
  4. python3-输入摄氏度转化为华氏度
  5. GPRS的工作原理、主要特点(转自aerkate)
  6. FPGA数字系统设计(9)——信号产生
  7. 一秒解决win10电脑自动黑屏问题
  8. PCB正片和负片有什么区别
  9. 付子玉:丁香园医疗领域图谱的构建与应用
  10. 17.7.19-聊天APP-登录界面