[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论

这篇具有很好参考价值的文章主要介绍了[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0x00

首先非常感谢大家阅读我的第一篇。本文章不仅仅是题解,一些细枝末节的小问题也欢迎大家一起解答。
小问题的形式如Qx:xxxxxxx? 欢迎发现小问题并讨论~~

N1nE是本人另外一个名字,目前主要学习pwn方向,此文章以及后续别的文章,如有不当欢迎补充与纠正。

0x01 题目来源

题目来自buuctf的pwn栏目第三题warmup_csaw_2016
一道栈溢出的基础题目。

buuctf网址:https://buuoj.cn/challenges

0x02 题解

1.分析文件

第一步:file 文件名

当我们下载附件以后,在linux的命令行里输入如下命令,得知是64位且是elf可执行文件。
(Q1:其他信息尚不知有什么作用,欢迎补充)

[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论
为了方便我拖入自己的pwn文件夹之后将其重命名为wm1,此命令即“file 文件名”,即可查看文件相关信息

第二步:checksec 文件名

我们继续使用checksec看看这个文件的保护情况。
Q2:check是检查的意思,那么这里的sec是什么呢?我猜测是security
[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论
可以看出来没有什么保护

2.IDA反编译

第零步:nc

我一般一开始会先nc一下靶机,看看运行是什么样子的才放入ida,或者同时进行。
Q3:这样的行为在实战或比赛中会有什么影响吗?

第一步:拖入ida()

我们刚才已经知道此文件是64位,我们把它拖入ida64即可。

第二步:阅读main函数

按F5进行反编译。

我们可以看到这里有一个gets函数,这是一个非常不安全的函数,他会不管三七二十一读取你输入的数据。

当然这对我们是有利的。本人做栈溢出的题目基础思路便是通过该函数,注入数据使指针指向返回地址的命令并输入返回地址,运行相应的命令使得我们获得权限或者flag。

[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论
我们刚才提到,注入数据使指针指向返回地址的命令并输入返回地址。现在可以注入数据完成操作了,那么我们要返回地址到哪里呢?我们继续查看代码。
其实此处main函数给了我们提示,或者nc过去也可以运行到输出“WOW:40060D!”这样一个字符串。我们现在去看看40060D有什么。

第三步:阅读关键函数

[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论
大概意思就是只要运行这里,就可以直接把flag给我们了,那我们就可以开始写exp(exploit,攻击脚本与方案)了。

3.pwn!

第一步:注入多少数据?

我们点击main函数中gets存放输入数据的变量v5,查看其地址和空间大小。
[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论
可见其空间大小为40字节,s到r问欧阳学长得知是存放rbp地址。r就是存返回地址并进行返回。其实我突然注意到文件内部也有提示。
[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论

v5大小为0x40,s到r有0x8,也就是我们需要注入(0x40 + 0x8)字节的数据,并在最后输入地址运行我们想要运行的函数。思路清晰,我们开始写exp吧!

第二步:正式写exp

[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论
Q4:p64有关的作用欢迎补充!我对此也是有点懵懵的,这里放一个网络上的解释:
“用p64()发送数据时,是发送的字节流,也就是比特流(二进制流)。本来是01这样表示的,但是ide为了方便观察, 就转换成了\xc1\x0f\x00\x00\x00\x00\x00\x00。发送时,也是按照字节来发,所以要用"%s"来读取”

以上就是我们写好的exp脚本,接下来就是运行啦!

第三步:运行exp!

[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论
可以看到得到flag了,这题目就这样解出来了。

0x03

谢谢大家阅读我的题解,有许多不足与疑问欢迎大家跟帖讨论~

最后的最后

Q5:在写题解最后一步的时候我尝试重新连接但是遇到如下问题
[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论
不太清楚是不是因为做过一遍所以不能再做,以上五个疑问欢迎大家讨论~

下午又做了一次又可以了hhh文章来源地址https://www.toymoban.com/news/detail-404783.html

到了这里,关于[BUUCTF]pwn栏目 warmup_csaw_2016 1的题解和小疑问,欢迎讨论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • buuctf PWN ciscn_2019_c_1

    encrypt()里面get函数存在溢出点offest=0x50+8。puts()可以用来泄露libc基址。 amd64的参数调用顺序是如下序列的自后而前,即:完成传递参数(地址)-本函数地址 - 返回地址 ... - pop_rdi;ret - argv - call_addr - ret_address 获得本elf中的gadgets: ROPgadget --binary ./ciscn_2019_c_1 --only \\\"pop|ret\\\" ROPgadg

    2024年02月07日
    浏览(23)
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn

    再补完这个就基本上完了. Schmidt-Samoa密码系统看上去很像RSA,其中N=pqq, 给的e=N给了d NTRU又一个格的基本应用   当E.order() == p时   p-1光滑时的分解 此题先是p-1光滑分解,然后是e=3*0x10000先求3次根再用rabin求16次    求误差,虽然被分成3个数组,但本质上是一个,可以连到一起求解. 

    2024年02月07日
    浏览(28)
  • BUUCTF reverse题解汇总

    本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 easyre reverse1 reverse2 内涵的软件 新年快乐 xor helloworld reverse3 不一样的flag SimpleRev Java逆向解密 [GXYCTF2019]luck_guy [BJDCTF2020]JustRE 刮开有奖 简单注册器 pyre [ACTF新生赛2020]easyre findit rsa [ACTF新生赛2020]rome

    2024年02月03日
    浏览(25)
  • DozerCTF-PWN题解

    这次比赛一共放了4道pwn题,3道栈上的,比较菜,只会做栈 1.pwn_fclose 开了canary和PIE,并且最后clode(1),clode(2)。不过问题不大,printf格式化字符串,泄露canary和libc地址,然后直接栈溢出getshell即可,注意栈平衡。后面就是执行exec 10,就能拿flag了 2.mid_pwn 禁用了open,read,write和其他

    2024年04月28日
    浏览(26)
  • BUUCTF_Misc题目题解记录

    仅记录解题步骤,方便自己没事儿的时候拿出来强化一下记忆,俗话说好记性不如烂笔头,祝我早日卷赢同事(? 有没有和我一样用M1芯片,装不了工具,用不惯虚拟机,做不动杂项(那就更不要说pwn了)的大冤种?看过来呜呜呜呜呜…… 1.下载的附件是一张图片(.jpg),在

    2024年02月01日
    浏览(66)
  • Pwn系列之Protostar靶场 Stack6题解

    源码如下: 首先,我们先来分析这段程序在做什么? 第1-4行导入一些常见的库函数 第6行定义了getpath()函数 第8行定义了一个buffer数组,数组长度是64 第9行定义了一个unsigned int 变量,变量名ret 第11行打印输出字符串“input path please” 第13行用gets函数向buffer数组写入字符 第

    2023年04月18日
    浏览(27)
  • Pwn系列之Protostar靶场 Stack3题解

    这个比较有意思的是,main函数里定义了一个函数指针,为什么说是函数指针呢?因为在main+61指令中调用了 这个函数指针。栈图和之前的类似,不同的是我们需要修改函数指针指向的地址。 找到了win函数的地址 现在只需要修改函数指针的地址到win函数即可。

    2023年04月18日
    浏览(32)
  • 线段树好题! P2824 [HEOI2016/TJOI2016]排序 题解

    题目传送门 线段树好题!!!! 咕咕了挺久的一道题目,很早之前就想写了,今天终于找了个时间A掉了。 给定一个 (1) 到 (n) 的排列,有 (m) 次操作,分两种类型。 1. 0 l r 表示将下标在 ([l, r]) 区间中的数升序排序。 2. 1 l r 表示将下标在 ([l, r]) 区间中的数降序排序。

    2023年04月09日
    浏览(22)
  • GDOU-CTF-2023新生赛Pwn题解与反思

    因为昨天学校那边要进行天梯模拟赛,所以被拉过去了。 16点30分结束,就跑回来宿舍开始写。 第一题和第二题一下子getshell,不用30分钟,可能我没想那么多,对比网上的WP,自己和他们有点不太一样,比较暴力。 大概17点10的时候,写第三题,可能自己第一次遇到随机数问

    2023年04月17日
    浏览(42)
  • 2016年 团体程序设计天梯赛——题解集

    前言: Hello各位童学大家好!😊😊,茫茫题海你我相遇即是缘分呐,或许日复一日的刷题以及让你疲惫甚至已经厌倦了,但是我们真的真的达到极限了吗?少一点自我感动,没有结果前别太松懈,请相信 ”一万小时定理“ 。当你迷茫时抬头看看远方回想当初那个稚嫩脸庞的

    2023年04月09日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包