type
status
date
slug
summary
tags
category
icon
password
这个周末把今年的ciscn,不对好像按理来说应该是2025年的国赛,不过今年举办线上。不管了吧,反正就是国赛。打了一下,不得不说不愧是国赛,每一年的比赛都不简单。去年的时候我还啥都不会,看着那些题目就头大。
去年是go语言的专场,今年就变成了c++的专场。一样的难做,看了一天最后也就只做出来一道题,甚至这道题还是靠调试加猜才做出来的,其他的题目一道c++,一道vmpwn,后面又上了3道pwn题,一道内核,一道好像是webpwn,还有一道车机的pwn,不过这两道都是c++的。痛苦。
这些题基本就在考逆向,现在的学pwn单学pwn是绝对不够的了,不是逆向量大就是与其他东西的结合。唉,越来越来难了。学吧
anote
程序中有一个调用链,在每一个用add函数申请的chunk的数据段的第一个位置会存放一个heap的地址,在那个地址里有一个函数的起始地址,当程序执行第3个函数之后就会寻找那个的数据段的第一个位置存放的heap的地址,在跳转执行那个函数。就可以用堆溢出把这个地址修改。

先申请4个chunk,用打印的函数直接把第一个chunk打印,程序给一个heap的地址,

然后向第一个chunk进行溢出,把第二个chunk的数据段一个位置的内容覆盖为后门函数,在向第三个chunk的进行堆溢出,把第4个chunk的数据段一个位置的内容覆盖为刚刚在第二个chunk的后门函数的地址。在利用3的选项随便向第四的chunk随便写点东西。于是程序就会从第4个chunk的数据段一个位置的内容跳转到chunk的数据段一个位置的内容就是后门函数的位置,然后程45646452132312321000..0序会执行这个位置的函数,就执行后门拿到shell
exp
这道题也是早早就被打烂了,确实不是很难,我逆向没看懂,靠调试猜给做对的。
- 作者:wgiegie
- 链接:https://tangly1024.com/article/15e3ecc9-5160-8094-87ba-e3e6f2dc4cf5
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章