BUUCTF-pwn刷题记录(22-7-30更新)

本文记录刷题过程中一些卡住的或者觉得有必要记下来的题目。

pwn2_sctf_2016

考点:int overflow、ret2libc
这题没有write和puts函数,因此使用的printf函数进行的泄露。

babyheap_0ctf_2017

考点:fast bin attack、__malloc_hook、one gadget
pwn部分的第一道堆溢出题目。但其实并不简单,如果是新手的话可以放一放再做这一题.
解题记录

babyrop2

考点:ret2libc
这题不难,需要注意的是,这题提供了libc,如果使用ELF去搜索binsh的时候,注意python3的用法和python2有点区别

# python2
binsh = libc.search('\bin\sh').next()

# python3
binsh = next(libc.search(b'\bin\sh'))

ciscn_2019_s_3

考点:syscall、万能gadget、srop
本题有两种解法,一个是通过11号系统调用,需要熟练掌握万能gadget的使用;另一个是59号系统调用。不过难点的话在于如何获取/bin/sh的地址。
另外调试的时候注意本地版本和线上版本是否一致。
解题记录

ciscn_2019_es_2

考点: rop、栈劫持
本题的难点在于溢出的空间很小,只能输入一个地址单位,但是题目中又不存在后门。因此需要通过构造rop链溢出到栈上。
同类题:ez_pz_hackover_2016
解题记录

spwn

考点:栈劫持
对栈劫持类的题目还需要多练习一下。而且这题本地getshell的时候会报错,但是远程可以。emmmmmmm…

bjdctf_2020_babyrop2

考点:格式化字符串、Canary绕过、rop
这题泄露canary的方式还挺特别的,第一次遇到这样的。记录一下

easyHeap

考点:unlink、got劫持
系统提供的cat flag没有用,一开始使用fastbin attack执行了cat命令,但是提示不存在相关的flag文件。后面使用unlink直接getshell。

pwnable_orw

考点:seccomp沙盒,open-read-write
一个新的题型,沙盒逃逸。另外可以熟悉一下pwntools.shellcraft以及open-read-write的利用。
解题记录

bjdctf_2020_router

emmmm,披着pwn皮的RCE

hitcontraining_uaf

考点:use-after-free
一道有关堆,却不是堆溢出的题。

cmcc_simplerop

考点:rop,mprotect
很典型的一道rop的题目
解题记录

hitcontraining_playfmt

考点: 格式化字符串
这道题还卡了挺久的。困惑的点在于这题无法找到格式化字符串的在栈中的偏移,但其实并没有什么影响的,学习利用ebp链再格式化字符串中的利用。
解题记录

zjctf_login

这一题的难度倒还好,想明白为什么填充的时候需要用’\x00’而不能用’a’需要关注一下
解题记录

babyfengshui_33c3_2016

考点:堆溢出
没有什么幺蛾子的堆溢出,想清楚怎么溢出就比较简单了。

ciscn_2019_s_4

考点:栈劫持
溢出的空间只够填一个地址,考虑栈劫持。

wustctf2020_closed

考点:linux文件描述符
这题的考点第一次遇到,学习到close(1) - 关闭标准输出 close(2)-关闭标准错误 两个用法。具体解法exec 1>&0参考这位师傅的解答

pwnable_start

考点:栈劫持
nx没开,考虑shell。通过write(本题中用的int80 3)泄露栈地址,从而实现栈劫持,把esp指向写在栈中的shell

gyctf_2020_borrowstack

考点:栈劫持
这题栈劫持很容易想到,但是坑不少

  • 第一个坑在于劫持到的地方距离got表位置很近,在系统调用puts的过程中,调用会用到栈来保存上下文,这样导致原来的got表被覆盖破坏,从而不能正常运行。解决方法就是写入到地址较高的地方,预留出一个“缓冲区”做为运行中保存上下文的空间。
  • 第二个坑在于这题使用system会报错,原因很惭愧没有搞清楚。因此最后是使用one_gadet解题

你可能感兴趣的:(pwn题,学习,安全,pwn)