记一次最简单的exploitme

本文记录了一次编写exploitme的过程,包括源代码分析、需要关闭的系统保护如ASLR,以及如何处理shellcode中的特殊字符问题。作者在实践中遇到的困难和解决方法,特别是对于exploit db中shellcode的验证和选择进行了讨论。
摘要由CSDN通过智能技术生成

0x01 前言

闲来无事想写一个exploitme,之前虽然做过一些比较简单的ctf题目,可是还一直没有自己写过一个exploitme,本来是一个学长需要,结果由于落入各种坑导致最后没有成功在规定的时间给他。。顺带由此记录一下,如果一个裸的exploitme需要关闭的一些保护

0x02 src code

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void show(char *buf_temp)
{
    char buf[50];
    strcpy(buf, buf_temp);
    printf("%s at %p\n", buf, buf);
}
int main()
{
    char buf[100];
    scanf("%s", buf);
    show(buf);
    return 0;
}

溢出点比较明显,就是在strcpy的时候,会溢出,由于简化计算,我直接把溢出点的地址写出来了。

0x03 需要关闭的保护

  • aslr 地址随机。如果每一次运行都是不同的地址,就需要关闭。方法:sudo sh -c “echo 0 > /proc/sys/kernel/randomize_va_space
  • 堆栈执行权限: sudo apt-get install execstack 然后execstack -s <文件名>就可以了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值