nbsp;int func(char* b){
char a[8]={0};
strcpy(a,b);
}
“表哥你来看这段程序有没有问题”
他一下指出,strcpy参数的类型是void*,这里会触发编译器警告。
“没了?”
“没有返回值,会返回一个随机值”
“还有吗?”
“没了”
我:“看来您也是学业不精啊,微软网站上已经公布了一个系统漏洞,名叫Rpc远程代码执行漏洞,这个漏洞就是由strcpy引起的”
哥:“一个strcpy能引起什么?”
我:“缓冲区溢出,正常的思维就是char*b 不会超过8字节,对吧。但是如果它是个精心构造的,那可就坏了”
哥:“能怎么精心?”
我:“字符串遇到0为结束,换句话说,字符串拷贝也是一样。如果我在a数组上拷贝一个超长字符串,把栈上的内容覆盖了,会发生什么”
哥:“程序崩掉”
我:“这是一般人看到的,我是说,这个字符串精心构造,把栈内容覆盖,还不让程序崩掉,甚至于把存储返回地址的地方也覆盖,那么函数返回就跳转到我精心构造的部分!我在这段汇编代码中,写入攻击代码,这样不就窃取了系统权限?劫持了系统进程?”
哥:“我擦……还能这么玩?这就是在任何进程里,执行任意代码了啊!”
我:“就问你牛逼不牛逼”
表哥冲我伸出大拇指,转头看看那几个一脸懵逼的货,“你们听懂了没有?”
这几个摇摇头,“就跟天书一样”
电脑城老板一脸欢喜,对陶老师说:“老师这孩子是个宝贝啊,你可要好好教导”
陶老师一脸欢喜,看吧,这是我的学生。
我们走出教室的时候,表哥搭着我的肩,从没见过他对我这样,然而我感觉到表哥的体温比平时热得多,该不会发烧了吧?这个时间点……难道?希望是我多想了。
我被陶老师要求,就在阅览室编程,别把源代码带走,这里能上网,呵呵~特么的996这么早就开始了?
陶老师很敬业,我鼓捣到晚上9点,他也陪我到晚上9点。我没忘记今天还要侍寝,就去了皮皮家
第二天,学校门口多了几个老师站岗,从没见过这场面,每个老师拿着电子测温枪,对每个进入学校的学生测量体温。
妹妹明显有些害怕,皮皮拉着妹妹,“别怕,有我和哥哥在,你不会有事的”。皮皮从书包里拿出口罩,给我们三个戴上,“记住!无论什么情况不许摘,你必须要听话!午饭咱们回家吃,我特意交代的”
妹妹战战兢兢的被我和皮皮架着进入教室,进入教室后,戴着口罩的我们就像个异类,因为没有人戴。