首页 > 其他分享 >XYCTF pwn部分题解 (部分题目详解)

XYCTF pwn部分题解 (部分题目详解)

时间:2024-04-29 21:45:39浏览次数:29  
标签:题目 函数 题解 XYCTF 地址 wp pwn 思路 我们

hello_world(签到)

思路:✅

这道题就是利用printf函数泄露libc的基地址,然后再次进行栈溢出通过system,/bin/sh来获取shell

wp:

invisible_flag

思路:✅

题目提示orw,那我们先看看是否开了沙盒

那么是开了沙盒的,试试orw读取flag

虽然保护全开但是程序会执行我们写的shellcdoe那么就可以orw读取flag了

wp:

static_link

思路:✅

那么这题提示我们是静态编译,对于静态编译的,哪些ret2libc什么的都没法使用了,但是我们可以利用程序现有的函数,比如read,write,mprotect....等等。那么这道题目就可以利用mprotect函数来获取shell,对于这个函数详细的解释可以看看这篇博客 mprotect静态编译

wp:

guestbook1

思路:✅通过修改index和name来完成类似于栈迁移的过程,先修改最后一个字节到backdoor,因为我们不知道栈的地址,但是可以通过爆破最后一个字节来完成迁移(有1/16的概率

wp:

baby_gift

思路:✅题目给了我们gift函数,但是我发现没有什么实际的作用,但是他提醒了我们要看看rdi(hahaha)

程序是有溢出的,但是没有pop_rdi那一类的gadget

那我们看看反汇编的GetInfo函数,发现了一个不得了的东西

那么就是我们输入栈上的数据被赋值给了rax,rax赋值给了rdi,也就是我们可以,通过输入的数据来控制rdi,那么我输入一个%p后面\x00截断一下,然后返回地址调用printf是不是就可以泄露rsi的地址,我们还要看一下rsi的地址是不是跟libc的地址有关

发现是有关的,那么我们就可以计算出read函数的地址,进而得到libc版本和libc_base

那么接下来就再来一次溢出通过输入/bin/sh控制rdi,然后system就好了

但是值得注意的是我们要把eax清零之后再进行我们的打印和system函数,不然就会出现一系列的问题。

wp:

fmt

思路:✅题目是格式化字符串类型的题目,而且给了后门函数,还有libc的地址,但是这次没有给我们printf而是scanf,但是本质上是一样的,都可以进行漏洞的利用,因为程序利用exit来退出的,我们可以利用sacnf的%s来进行修改exit_hook为后门函数,关于这个函数具体可以看这个博客 https://www.cnblogs.com/bhxdn/p/14222558.html

wp:

❗这里踩个坑,我发现直接gdb调试和使用脚本来动态调试,exit_hook的偏移不一样,可能是我输入的东西的区别?.......所有还是以脚本调试的为主吧haha

simple_srop

思路1:✅本题开了沙盒,所以不能直接sh来进行getshell,可以进行orw读取flag,注意一下偏移即可

思路2:✅通过mprotect函数执行orw shellcode,当然这个shellcode可以手写也可以使用工具,其实两种思路都是差不多的都要注意偏移

wp:

Intermittent

思路:✅这个题目限制了我们的shellcode,但是别怕,因为程序会跳到,可执行段上去执行,然后我们输入的数据在栈上,它会四个字节一组赋值给可执行段上,但是不连续,我们可以通过我们输入栈上的数据和它配合来syscall

因为rax要为一个合法地址,所以我们要给rax赋值(它实际上是把rax最低的一个字节加到它本身)

wp:

 

那先到这里吧(后续我再补上haha)

总结:这次收获很大,比赛不是目的,而是总结提高的一次机会,师傅们都很厉害,大家一起交流,有什么具体的问题可以评论留言,第一时间解答!!

标签:题目,函数,题解,XYCTF,地址,wp,pwn,思路,我们
From: https://www.cnblogs.com/CH13hh/p/18166545

相关文章

  • 二叉树笔试题解题思路
    数据结构二叉树笔试题:解题思路:1.判断是否为空树,若为空树,则返回0;2.定义两个指针备份根结点地址,定义两个整型变量a,b并初始化为0,记录左右子树的深度;先对根结点的左子树进行遍历,若根结点的左结点不为NULL,则a++,把根结点的左结点赋值为新的根结点,再进行上述操作,若根结点的左结点......
  • AtCoder-abc350_g 题解
    原题链接题意简述有一个无向图,初始时没有边。接下来有一些操作:将\(u,v\)连边。询问\(u,v\)的距离是否为\(2\),如果是,则输出中间的那个点的编号,否则输出0。每次询问后,更新\(lastans\)为询问的答案,初始时为\(0\)。每次操作的\(opt,u,v\)使用\(lastans\)解码,......
  • AtCoder-abc350_f 题解
    原题链接题意简述给定一个字符串\(S\),对于每个匹配的括号,将括号内的字符左右翻转并大小写反转,然后删除括号。输出最后的序列。思路本题为文艺平衡树的模板题。扫一遍字符串进行括号匹配,每次把最内层的括号进行操作。最后遍历一遍平衡树,将不为括号字符的字符输出。FHQ_Treap......
  • 【题解】 量化交易1
    题目描述applepi训练了一个可以自动在股票市场进行量化交易的模型。通常来说,applepi写出的模型,你懂得,就好比一架印钞机。不过为了谨慎起见,applepi还是想先检查一下模型的效果。applpie收集了“塞帕思股份(surpass)”在最近的连续N天内的价格。在每一天中,他可以做如下事情之一:......
  • 【题解】 量化交易2
    题目描述applepi训练了一个可以自动在股票市场进行量化交易的模型。通常来说,applepi写出的模型,你懂得,就好比一架印钞机。不过为了谨慎起见,applepi还是想先检查一下模型的效果。applpie收集了“塞帕思股份(surpass)”在最近的连续N天内的价格。在每一天中,他可以做如下事情之一:......
  • 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare inter
    大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误“错误:Failedtodownloadmetadataforrepo‘AppStream’:Cannotprepareinternalmirrorlist:NoURLsinmirrorlist”1、进入yum的repos目录代码语言:javascript复制cd/etc/yum......
  • git - git 问题解决方案汇总
    git命令行相关问题汇总记录如下:在本地创建git仓库并关联远程仓库后,无法正常拉取远程更新报错信息:fatal:refusingtomergeunrelatedhistories解决方案:gitpulloriginmaster--allow-unrelated-histories解决git使用ssh无法访问服务器的问题报错信息:Error:Unab......
  • 题解:CF1957A Stickogon
    CF1957AStickogon题意题意十分简单,给予你\(n\)个棍子,问这些棍子可以构成多少个正多边形。思路说是可以构成多少个正多边形,所以我们可以用边最少的正多边形等边三角形来计数。在输入\(a\)的时候,用一个数组\(f\)来计算\(a\)出现的次数,当\(f_{a}\)等于\(3\)时,答案......
  • java代码运行出现DENIED Redis is running in protected mode because protected mode
    这个错误是因为开启了保护模式,导致出错。所以需要关闭redis的保护模式。编辑redis的redis.config  注释bind127.0.0.1 、修改protected-mode为no、修改 daemonize为no然后重启redis ......
  • ctfshow-pwn15
    该题目是很简单,总结一些需要的知识点:使用as手动编译asm文件使用ld手动链接可执行文件文件下载后是一个名为flag.asm的文件首先使用nasm命令编译为flag.o文件nasm-felf32flag.asm-oflag.o-f:指定编译文件类型-o:指定编译后导出的文件名编译后会生成一个flag.o......