freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

实战解析PWN签到题
2020-11-02 17:03:23

题目只给出nc端口没有附件 连接发现

Pwntools is such an awesome python module, right?

Tell you a secret (only smart baby can see it) :

Maybe I will tell you again when you clever than ELSEpush ......

最后面有省略号我猜测应该是没有输出完所以我们使用pwntools攻击 recvline() 接受没有显示出来的内容

然后发现有一个base64加密的字符串 结合题目说聪明得人才能发现解密出来就是flag{n0tf4stert6an_y0u}

ret2text

拿到题目我一般的做题思路是首先checksec一下看到附件之打开了NX保护所以程序中不能直接使用shellcode执行任意代码 以及32位的elf linux程序

然后通过看到的文件基本信息选择64位或者32位的IDA Pro 这个ret2text我们选择用32位的来静态分析它的源代码

用IDA打开之后它自动停在main函数处首先展现出来的是汇编代码 我们要将汇编代码转成我们能通俗易懂的c语言代码按F5进行反汇编发现这个函数的主函数并没有什么漏洞但是main的子函数vulnerable里面定义了缓冲区有8字节然后gets函数这里是一个栈溢出的基本漏洞 gets函数可以有栈溢出的漏洞对读入的数据不受限制 所以可以借助溢出的漏洞来到它的返回地址 我们从静态调试中得到栈里与ebp距离为16字节而缓冲区只定义了8字节 然后我们就用gets函数执行可读多个字节来覆盖栈里的程序

在ida中我们还发现有一个system函数这就是一般pwn题的后门函数当我们用垃圾数据写出的payload成功劫持了程序的执行流时 需要写一个指针的返回地址来执行我们需要的恶意代码 这个system地址就是8048522

根据综上分析exp如下 python 1.from pwn import * 2.c=remote('...', ) 3.#c=process(./ret2text) 4.py=b'A'*16+b'BBBB'+p32(0x8048522) 5.c.sendline(py) 6.c.interactive()

总结此题型的思路以及做法

首先了解pwntools,pwntools是一个二进制利用框架。 下面我给大家介绍下pwntools的使用方法 pwntools脚本 python 1.from pwn import * 2.c = remote("127.0.0.1", 8080) 3.sendline("AAAA" * 18 + p32(0x8048522) 4.c.interactive() remote("一个域名或者ip地址", 端口) 会连接到我们指定的地址及端口。 然后该函数会返回remote对象 (这里,我们将该对象保存到了变量 c). remote对象主要用来进行对远程主机的输入输出. 它有如下几个方法:

send(payload) 发送payload

sendline(payload) 发送payload,并进行换行(末尾\n)

sendafter(some_string, payload) 接收到 some_string 后, 发送你的 payload

recvn(N) 接受 N(数字) 字符

recvline() 接收一行输出

recvlines(N) 接收 N(数字) 行输出

recvuntil(some_string) 接收到 some_string 为止

# xss # 黑客 # 无线安全 # 数据安全 # 漏洞分析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录