这是一篇很短的文章,因为主要就是介绍一下如何在Fedora的系统下关闭堆执行保护然后呢,实行简单的注入
华丽丽的分割线————————————————————————————————————————
这是我第一次用Fedora系统,真是每个系统都有自己的个性的说。。。
非管理员身份登录,辣么,就一定要先进入root,不然怎么该权限哩
命令:su,然后让你输密码,然后就root啦啦啦
但是,我的Fedora系统的命令,基本都有加/sbin的路径才行。。。如果实验碰到cannot find the command的话,可以试试看“which 命令”查看一下路径,或者“whereis 命令”查找它的位置
这个事情告诉我们:如果跑不通,先检查权限,再检查命令是否真的输对了。。。
华丽丽的分割线————————————————————————————————————————
好了,可以下一步了,关闭堆栈执行保护,表示不同的系统好像用的都不一眼哦,我觉得,结合网上的一些常用的,加你自己去找找看,就可以了,
你可以用这个命令“sysctl -a”查看一下所有的设置的值(如果是没找到命令,路径路径路径!!!)
大概哪些选项是你要考虑的呢,
参阅1:Problems with Security Settings in Fedora Core 这是一篇全英文章,其中我得到的有用信息是,如果你要修改的选项系统根本没有,那么它就会返回“XXX is an unknown key”一类的。这个时候,你就可以用sysctl -a | grep rand(我没记错的话)来查看一下本机到底是什么选项
参阅2:Linux下基本栈溢出攻击 这篇写得挺好的,我觉得放这个OK了。
参阅3:缓冲区溢出漏洞 这个也不错
其实只要能找到sysctl命令,就没什么问题了,不像我,呜呜呜,实在不明白为什么它居然控告我系统没有sysctl。。。我恨路径。
不华丽丽的分割线————————————————————————————————————————
地址
关闭堆栈执行保护后,你可以为所欲为了,然后我只能非常弱的做一个很simple的实验,真的simple,特别适合我这种入门级的
想要做攻击,有一个东西你必须知道——地址怎么获得呢?
比如我写过一个heap.c的文件,内容很简单,就是malloc就,strcpy,然后free制造缓冲区溢出的漏洞。
如果你想知道某某函数的GOT地址,可以用:objdump -R obj的文件名 | grep 某某函数名
我们可以用如下命令查看第一块分配的内存的地址:
ltrace ./heap ruaanan | grep 666
得到其值为 0x08049608
暂时就知道这么多,以后还有什么命令再加
再一次不华丽丽的分割线————————————————————————————————————————
调试
如果想调试程序,用gdb的一些比较simple的命令
gdb ./obj文件 进入调试
(gdb) l 打印代码——注意,是小写"L"
(gdb) b 行数 加断点
(gdb) run 跑起来~
(gdb) p &地址 :char buf[444]; p &buf这种用法,查看buf字符的地址
(gdb) x/20x 0x地址值 :上一条查到是0x80497e0,这一条就应该这么写:x/20x 0x80497e0,查看buf的内容
(gdb) q 退出
以后再有碰到别的再加,其实用help命令可以知道所有的,但是我还是觉得放上自己用过的会更好。
没有形容词的分割线————————————————————————————————————————
再有内容再加