西西河

主题:一篇讲memory overflow导致被攻击的文章 -- yueyu

共:💬64 🌺34
分页树展主题 · 全看首页 上页
/ 5
下页 末页
          • 家园 一眼看过去起码有好多个错误

            一眼看过去起码有好多个错误

            1.new之后没有检查是否成功

            2.f2没检查是否null pointer

            3. 没有检查长度有没有超过12

            。。。

            class a

            {http://www.ccthere.com/topic/2031545/1

            public:

            a(void)

            {...

            } http://www.ccthere.com/topic/2031545/1

            f1(void)

            {...

            }

            f2(char *pBuf)http://www.ccthere.com/topic/2031545/1

            {

            strcpy(&c1[0], pBuf);

            }

            private:http://www.ccthere.com/topic/2031545/1

            char c1[12];

            }

            ff2(char *pC1)http://www.ccthere.com/topic/2031545/1

            {

            a *p_a0 = new a();

            a *p_a1 = new a();

            p_a0->f2(pC1);http://www.ccthere.com/topic/2031545/1

            p_a1->f1();

            ...

            delete p_a0;

            delete p_a1; http://www.ccthere.com/topic/2031545/1

            }

          • 家园 改用strncpy吧,呵呵

            以前对缓冲区溢出痴迷过一段时间,不过还是觉得OS更吸引我,后来就没怎么关注了。

          • 家园 这是C++,不是C。所以,咱是看不懂喽。 呵呵
          • 家园 此题可以作为笔试考题用

            表面看起来简单,但是揭示的问题很深刻。

            • 家园 那你还要不要招人了?

              我无法预测这题能让多少人阵亡。。。

              • 家园 要不在f1()上做点手脚?

                貌似问题不是特别隐蔽,不太难发现。

                要不,为了减轻题目的难度,把f1()写详细点,给点hint,便于考生发现问题所在。

                • 家园 俺历来反对根据标准答案判断“考生”

                  面试的时候问比较合适。

                  关键看解决问题的思路。这可比标准答案更能看出一个人的全貌,比如对问题的领悟,沟通能力,对任务压力的反应,......

                  所谓的面试,就是在交谈中“挖坑”。

                  • 家园 笔试与面试

                    面试很费时间,所以有些公司的做法是先来笔试,筛掉2/3的候选人,剩下的1/3才有机会进入首轮面试。

                    首轮面试是针对笔试中暴露的问题,重点盘查,再筛掉1/2的人。

                    笔试的判卷标准需要统一,否则对考生不公平。

                    所以,还是要有标准答案。虽然我也同意,标准答案是一个比较笨拙的办法。

                  • 家园 着啊

                    我那道调息的题,就是在讨论中,看能从对方发掘出多少东西来。一般我可以看出对方在汇编,计算机体系结构以及操作系统上面的功力。重点考察对缓存,内存管理,中断处理以及外设端口到内存映射这几个地方的理解。

                    所以我那道题不是无解,而是没有固定的解法,具体的结果,跟当时执行的内存/CPU环境,特权层次还有具体的程序都有关系。

                    • 着啊
                      家园 如果“考生”说他有某OS内核的经验。。。

                      但是该考题中回答不出内存管理的问题,基本就可以考虑叫下一位考生进场了。

                      不过在地址[0x12345678]中映射外设的比较少见,OS中大家都有个约定大概放在什么位置吧?

                • 家园 还得防着candidate到这里来看帖子

                  那咱们讨论这么些都白讨论了

                  人家就知道XXXX公司招人原来有这个题目,嘿嘿

          • 家园 呵呵,考我呢

            p_a0->f2(pC1);

            当strcpy发生的时候,下面可不知道执行到哪儿去了

            而f2(char *pBuf)这个pBuf很可能是外面谁给输入的

            p_a1->f1();

            吃饭先

分页树展主题 · 全看首页 上页
/ 5
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河