- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我陷入了黑客练习。
程序执行时会显示以下内容:
Build your own string!
Usage:
./4 length command...
Each command consist of a single character followed by its index.
Example:
./4 11 h0 e1 l2 l3 o4 w6 o7 r8 l9 d10
如何使用命令行参数执行缓冲区溢出攻击?
atoi
将字符串参数 str 转换为整数(int 类型)。
memset
将字符 c(无符号字符)复制到参数 str 所指向的字符串的前 n 个字符。
感谢您的见解!
#include <alloca.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static void usage(const char *argv0) {
printf("Build your own string!\n");
printf("\n");
printf("Usage:\n");
printf(" %s length command...\n", argv0);
printf("\n");
printf("Each command consist of a single character followed by its index.\n");
printf("\n");
printf("Example:\n");
printf(" %s 11 h0 e1 l2 l3 o4 w6 o7 r8 l9 d10\n", argv0);
exit(1);
}
int main(int argc, char **argv) {
char *buffer;
unsigned short buffersize, i, index, length;
if (argc < 2) usage(argv[0]);
length = atoi(argv[1]);
if (length <= 0) {
fprintf(stderr, "bad length\n");
return 1;
}
buffersize = length + 1;
buffer = alloca(buffersize);
memset(buffer, ' ', buffersize);
buffer[buffersize - 1] = 0;
for (i = 2; i < argc; i++) {
if (strlen(argv[i]) < 2) {
fprintf(stderr, "bad command \"%s\"\n", argv[i]);
return 1;
}
index = atoi(argv[i] + 1);
if (index >= length) {
fprintf(stderr, "bad index in command \"%s\"\n", argv[i]);
return 1;
}
buffer[index] = argv[i][0];
}
printf("%s\n", buffer);
return 0;
}
最佳答案
据我所知,缓冲区溢出是指覆盖缓冲区内存地址以执行代码或简单地指向另一个地址的好函数!在你的脚本中,我相信要进入下一个级别,你必须将内存地址指向 printf("%s\n", buffer); 。为此,请使用 gdb 调试代码并将内存地址覆盖到 printf 函数的任意位。一个不错的教程是 http://www.tenouk.com/Bufferoverflowc/Bufferoverflow4.html 。但是您应该阅读有关 C 编程以及源代码中所有易受攻击的代码的内容。哪一个是 printf("imvulnerable");
关于c - 黑客攻击 : how to perform buffer overflow attack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35591102/
A Killer Adversary for Quicksort声称有一种方法可以将任何快速排序实现减少到二次时间。我想这意味着它总是会生成一个列表,该列表总是需要 O(n^2) 才能运行。这是在说些
我想将整数矩阵列表转换为数字。我知道lapply对内部结构不友好,但是有没有lapply-solution? mtList = list(matrix(sample(1:10),nrow=5),
我对 Azure AD B2C 的帐户定价和身份验证有几个问题,这些问题都围绕着脚本式 DOS 攻击的问题。 定价页面:https://azure.microsoft.com/en-us/pricin
我对 Azure AD B2C 的帐户定价和身份验证有几个问题,这些问题都围绕着脚本式 DOS 攻击的问题。 定价页面:https://azure.microsoft.com/en-us/pricin
我正在关注基于 spring 框架 3.2.4 的应用程序的本教程 http://springdiaries.blogspot.be/2012/12/web-security-preventing-c
我正在编写一个工具,在给定任何 URL 的情况下,该工具会定期获取其输出。问题是输出可能不是简单轻量级的 HTML 页面(在大多数情况下是预期的),而是一些繁重的数据流(即直接来自/dev/urand
我是一名 iOS 开发人员,开发了一款网络服务应用程序,该应用程序已在 App Store 上架一年。现在,我决定让这款应用跨平台使用 - 从 Android 开始,为此我聘请了一名 Android
代码: void doit() { system("/bin/sh"); exit(0); } int main(int argc, char **ar
题目地址:https://leetcode.com/problems/queens-that-can-attack-the-king/ 题目描述 Onan 8x8 chessboard, ther
我使用了 Rack::Attack 的示例节流代码。 throttle('req/ip', limit: 100, period: 5.minutes) do |req| req.ip unles
为了便于讨论,我们假设我必须创建一个包含具有 INSERT 的 SQL 查询的局部变量: DECLARE @insert NVARCHAR(MAX) SELECT @insert = 'INSER
我陷入了黑客练习。 程序执行时会显示以下内容: Build your own string! Usage: ./4 length command... Each command consist o
当我使用 PHP + Mysql 时,我发现使用与数据库列名称相同的 html 输入名称很方便。这大大简化了 CRUD 操作。 但是,有一个困境。一方面,这种一对一的对应关系简化了事情,但另一方面,攻
我们一直在阅读 Definitive guide to form based website authentication目的是防止快速登录尝试。 这方面的一个例子可能是: 1 次尝试失败 = 没有延
这是我的代码: 类(class): class Player(object): """Base class for the player""" def __init__(self, name, arm
我有一个用 C++ 编写的游戏服务器,我正在使用一个网络库在 Windows 中使用 winsock。我一直在对我的服务器进行压力测试,看看它一次可以接受多少个连接。当我使用我的游戏客户端连接时它工作
我对这个话题的初步理解是,我需要防止一些请求中可用的垃圾字符来避免这些攻击。 我决定在使用之前通过对每个请求参数进行模式匹配来解决这个问题。 Internet 上的大多数帖子都在谈论 Null Byt
如何避免跨站点脚本攻击? Cross-site script attacks (或跨站点脚本)是指,例如,如果您的主页上有留言簿,并且客户发布了一些 javascript 代码,这些代码会将您重定向到
我非常担心我构建的网络应用程序的安全性,因此我一直在使用各种工具来抓取我的每个应用程序。 虽然在编程方面可以完成的所有事情都已经完成,但现成的类(如 Active Record)无法预见,但有一个问题
我知道格式化字符串攻击发生在格式化 I/O 函数需要比提供的参数更多的参数时。 在 C 中, 一个读取内存位置的例子: printf("%x"); // this prints a memory ad
我是一名优秀的程序员,十分优秀!