百度 2015 安全研发
技术研发
本套题共8题,并含有参考答案
题目详情
第1题

请解释下常见利用内存断点调试的原理?

内存断点通过将目标地址所在页属性改为PAGE_NOACCESS,当你尝试执行到目标地址时就会产生异常,调试器就会中断下来或者将目标地址内存改为0xCC (INT 3)指令,当执行到该地址时候会产生一个中断,调试器就会暂停下来。


第2题

对于Edit控件,你如何抓防止密码框内容被抓取?

在处理消息事件的时候,对WM_GETTEXT和EM_GETLINE事件进行过滤


第3题

DNS欺骗的方式有哪些?

hosts文件篡改, 本机DNS服务器IP地址篡改,DNS通讯包篡改。


第4题

列举两种应用层中简单的跨进程<span>DLL</span>注入的方法。

1、CreateRemoteThread + LoadLibraryA/W
2、SetWindowsHook/SetWindowsHookEx
3、QueueUserAPC + LoadLibraryA


第5题

以下是一段汇编代码,请用C语言实现相同功能。  

1  .data

2  SourceStringdb "Hello, World!",0

3  .code

4  start:

5  cld

6  xoreax, eax

7  movedi, offset SourceString

8  mov al, 'd'

9  movecx, 13

10 repnescas

11 jz wow

12 invokeExitProcess, 0

13 wow:

14 invokeExitProcess, 1

15 end start


   



这段代码是在固定字符串里面搜索字符 ‘d’

用C语言实现  

if (strstr (“Hello, World!”, “d”) != NULL))

    exitProcess(1);

exitProcess (0);

   



第6题

假设有如下所示的一个数字金字塔,现在,要求写一个程序来查找从顶点到底部任意处结束的路径,使路径经过的数字的和最大,并输出该路径的最大和。比如以下金字塔的和最大路径的和为7+3+8+7+5=30。

7

3 2
8 1 0
2 7 4 4
4 5 2 6 5


#include <cstdio>

#include <algorithm>

 

int a[500500] = {0};

int dp[500500] = {0};

 

int main(){

    freopen("numtri.in","r",stdin);

    int row_num = 0;

    scanf("%d", &row_num);

    int elem_num = row_num * (row_num + 1) / 2; // 数字金字塔中的元素个数

    for(int i = 0;i <elem_num;i++) {

        scanf("%d",&a[i]);

    }

    for(int i=0; i<row_num; i++) {

        dp[elem_num-1-i]=a[elem_num-1-i];

    }

    int n;

    for(int i=row_num-2; i>=0; i--){

        n = i * (i + 1) / 2;

        for(int j=0; j<=i; j++) {

            dp[n+j] = a[n+j] + std::max(dp[n+j+i+1], dp[n+j+i+2]);

        }

    }

 

    freopen("numtri.out","w",stdout);

    printf("%d\n",dp[0]);

    return 0;

}


   



第7题

假设有如下字符串: (234453)[234]{2324} 现在,要求编程分析其括号配对是否正确。请自行选择下列两种方案之一实现该程序:
方案一:不考虑括号优先级,只考虑配对正确性;方案二:考虑括号优先级,比如{1[2(3)4]5} 是正确的。但是[1{2}3]是不正确的。 

方案一:
使用栈,碰到左括号入栈,碰到右括号出栈,看最后栈是否空,是否还有未匹配完的右括号。
方案二:
思路同上,但是检查压栈时要对括号做优先级检查。


第8题

百度是一个大型网站,内部含有多个产品线,比如广为人知的贴吧、知道、空间等应用。然而设计这些应用的统一登录平台却是一件非常艰巨的挑战。需要考虑到通用性和安全性。
1) 对于一个Web应用程序,主要的身份验证和凭证保持的方法主要有cookie和session两种。他们又是如何起作用的?各有哪些优缺点?
2) 影响到cookie值作用范围的因素有哪些?请一一说明。
3) 从安全角度来考虑,一个大型网站的单点登录可能会引入哪些安全问题?如何设计安全的在线单点登录系统? 

具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。  默认时,网站的所有 Cookies 都一起被存储在客户端,并且所有 Cookies 连同网站的任何请求一起被发送到服务器。换句话说,网站中的每个页面都能够为网站获取所有的 Cookies。但是,你能够通过两个方式来设置 Cookies 的作用范围:        把 Cookies 的作用范围限制到服务器的目录,从而允许你把 Cookies 限制到网站的某个应用程序。 设置域的作用范围,能够允许你指定域中的哪些子域能够访问 Cookie。 把 Cookies 限制到目录或应用程序 要把 Cookies 限制到服务器的目录,请设置 Cookie 的 Path 属性

1.超时问题;

2.jsessionid问题;

3.单点退出时有时子系统未能正常退出;

4.有些请求路径不需要单点登录过滤器拦截;

5.不同应用服务实现可能要求SSO客户端做适应性改造。



共有 8 道题目