ShellCode的编写和利用
原文链接:https://hvnt3r.top/2018/10/Shell-code的编写和利用/
在渗透测试和漏洞利用中,Shellcode是一个十分重要的部分,在二进制的安全研究中,Shellcode也充当着十分重要的角色,本文会记录我学习Shellcode的编写和利用原理。
在程序中嵌入Shellcode并执行
首先拿一道十分简单的PWN题来演示程序是如何执行Shellcode的
首先,这是一个32位的程序,我把它放到了32位的kali虚拟机中
gdb-peda$ checksec
CANARY : ENABLED
FORTIFY : disabled
NX : ENABLED
PIE : disabled
RELRO : Partial
程序开启了NX和CANARY,实际上并没有检查此程序开启的安全措施的必要,因为分析IDA中的伪C代码可知,此程序会将用户输入的数据当作汇编代码进行执行,代码如下:
int __cdecl main(int argc, const char **argv, const char **envp)
{
int v3; // ST2C_4
void *v4; // ST30_4
int v5; // ST38_4
char s; // [esp+3Ch] [ebp-84h]
unsigned int v8; // [esp+BCh] [ebp-4h]
v8 = __readgsdword(0x14u);
v3 = open("/home/challenge/flag", 0);
setbuf(_bss_start, 0);
setbuf(stdout, 0);
alarm(0x1Eu);
v4 = mmap(0, 0x80u, 7, 34, -1, 0);
memset(v4, 195, 0x7Fu);
memset(&s, 0, 0x7Fu);
puts("OpenCTF tyro shellcode challenge.\n");
puts("Write me some shellcode that reads from the file_descriptor");
puts("I supply and writes it to the buffer that I supply");
printf("%d ... 0x%08x\n", v3, &s);
read(0, v4, 0x20u);
v5 = ((int

本文探讨了ShellCode在渗透测试和二进制安全研究中的重要性,讲解了如何在程序中嵌入并执行ShellCode。通过实例展示了一个简单的PWN题目,解释了如何利用特定的汇编代码(Shellcode)绕过安全措施,以及如何处理不可打印字符的问题。文章还提到了工具在ShellCode变形过程中的应用。
最低0.47元/天 解锁文章
3235

被折叠的 条评论
为什么被折叠?



