作者LPH66 (-6.2598534e+18f)
看板C_and_CPP
标题Re: [问题] 输入太多字元会造成程式hang掉。
时间Mon Mar 21 23:44:40 2016
※ 引述《ResolaQQ (ResolaQQ)》之铭言:
: : 推 LPH66: 楼上讲的攻击的小范例 https://youtu.be/1S0aBV-Waeo 03/21 18:43
: 不好意思,英听不太行也没啥用过 Linux,想请问一下该影片最後做的事,是否是
: 1. 先用 root 帐号把他先前写的那个有 buffer overflow 的程式改成具有 root 权限
: 2. 开个没有 root 权限的帐号并使用
: 3. 执行有问题的程式,将修改权限的动作偷偷放进参数列里
: 由於该程式具有 root 权限,所以也有修改权限的能力
: 就能把目前没有 root 权限的帐号修改成有 root 权限,之後就可以随心所欲
: 这样对吗?还是有误解?
他做的示范是这个样子的:
* 那只被攻击的程式是具有 suid 这个特殊权限的程式
这个特性表示他在执行时会暂时把目前的有效使用者 (euid) 设定为该程式的 owner
(euid 表示目前执行这只程式的使用者是谁;
一些修改系统设定档中该使用者的资料的程式
如 passwd 就会设定 suid 权限以修改只有 root 能动的系统档案
当然这种系统程式的 owner 一定是 root, 才不会被其他的使用者乱搞
suid 权限在一些类似状况下也是有用的, 不一定要是 root
只是这里这只被攻击的小程式的 owner 正好是 root 这样)
* 他用 perl 填进去的二进位字串是被称做 shellcode 的"文字"
如他所言, 这些文字一旦被当成机械码执行就会生出一个 shell 出来
* 现在该程式执行了, euid 设定成了 root
当被填入 shellcode 之後由於 buffer overflow
shellcode 被当成程式执行生出 shell
由於现在的 euid 是 root 所以这个 shell 就是 root 的了
* 所以你所谓的「修改权限」其实是 suid 的动作, 不是 shellcode 的作用
shellcode 只是负责让这只被攻击的程式生出一个 shell 来而已
只是因为 suid 的关系这个 shell 就变成 root 的这样
====
这则影片所展示的范例跟 shellcode 程式应该都是出自
Hacking: The Art of Exploitation 这本书
https://en.wikipedia.org/wiki/Hacking:_The_Art_of_Exploitation
(手边正好有一本 XD)
影片内容是第二章中间的几个小节
这一章的後半段还会讲解这个 shellcode 是怎麽写出来的
--
1985/01/12 三嶋鸣海 1989/02/22 优希堂悟 1990/02/22 冬川こころ 1993/07/05 小町
つぐみ 欢迎来到 1994/05/21 高江ミュウ 1997/03/24 守野いづみ 1997/03/24 伊野瀬
チサト 1998/06/18 守野くるみ 打越钢太郎的 1999/10/19 楠田ゆに 2000/02/15 樋口遥
2002/12/17 八神ココ 2011/01/11 HAL18於朱仓岳坠机 ∞与∫的世界 2011/04/02 茜崎空
启动 2012/05/21 第貮日蚀计画预定 2017/05/01~07 LeMU崩坏 2019/04/01~07 某大学合宿
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.39.85
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1458575083.A.9FC.html
1F:推 ResolaQQ: 完全懂了,感谢,这是第一次看到除了SQL漏洞的hack实例 03/22 00:00
2F:→ ResolaQQ: 所以想搞清楚到底在干嘛,影片说太快又带专有名词就... 03/22 00:01
3F:→ tuyutd0505: 学习了XD 谢谢前辈解释 03/22 00:19
4F:推 ronin728: 推 03/22 03:03
5F:推 james732: 推说明 03/22 12:11