Pwnable.tw start
Posted lijianming180
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pwnable.tw start相关的知识,希望对你有一定的参考价值。
Let's start the CTF:
和stdin
输入的字符串在同一个栈上,再准确点说是他们在栈上同一个地址上,gdb
调试看得更清楚:
调试了就很容易看出来在堆栈上是同一块地址。发生栈溢出是因为:read
和write
的缓存区地址相同,sys_write
函数地址只有20,但是sys_read
函数地址有60,当你输出大于20的时候就会覆盖掉ret。
payload
一般形式:padding + addr of shellcode + padding + shellcode
,所以我们要找一个addr of shellcode
。
可以看到在调用sys_write
的时候,有一个mov ecx,esp
的指令,此时的赋予ecx
的值就是Let's start the CTF:
的首地址,当我们leak
出这个栈上的地址的时候,我们就可以构造:
payload=padding(0x20) + p32(addr of esp + 20) + shellcode
。shellcode
的长度不能大于36。
|
|
以上是关于Pwnable.tw start的主要内容,如果未能解决你的问题,请参考以下文章