wargame
[pwnable.xyz] - dirty tultle write up
[pwnable.xyz] - dirty tultle write up
2020.04.15pwnable.xyz 34번째 문제 dirty turtle 이다. Analyze 이번 문제의 사용자 정의 함수를 보면 아래와 같다. ubuntu:~/environment/ctf/pwnable.xyz/34_Dirty turtle $ func challenge __libc_csu_fini __libc_csu_init _fini _init _start get_val handler main setup win checksec으로 바이너리에 적용된 보안 기법을 보면 아래와 같다. ubuntu:~/environment/ctf/pwnable.xyz/34_Dirty turtle $ checksec --file=challenge RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORT..
[zer0pts 2020 CTF] hipwn write up
[zer0pts 2020 CTF] hipwn write up
2020.03.09zer0pts 2020 CTF 문제 중 pwnable 분야의 hipwn 이다. 문제 파일을 다운로드 하면 chall, main.c 파일이 존재한다. main.c 코드 내용은 아래와 같다. #include int main(void) { char name[0x100]; puts("What's your team name?"); gets(name); printf("Hi, %s. Welcome to zer0pts CTF 2020!\n", name); return 0; } ubuntu:~/environment/ctf/zer0pts/pwn/hipwn $ checksec --file=chall RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fort..
Aero 2020 CTF write up - aerofloat
Aero 2020 CTF write up - aerofloat
2020.03.03Aero 2020 CTF 문제 중 pwnable 분야의 Aerofloat 문제이다. 대회 당일에는 풀지 못했지만, 롸업을 보고 재 도전 후 풀수 있게 되었다. Analyze 해당 문제의 바이너리 안에 사용자 정의 함수는 아래와 같다. ubuntu:~/environment/ctf/Aero CTF 2020/pwn/Aerofloat $ func aerofloat main menu read_buf read_int gdb로 문제 바이너리를 분석해서 c로 나타내면 아래와 같다. void menu(){ puts("1. Set rating"); puts("2. View rating list"); puts("3. View porfile info"); puts("4. Exit"); printf("> "); } int re..
[pwnable.xyz] catalog write up
[pwnable.xyz] catalog write up
2020.02.28pwnable.xyz 26번째 catalog 문제이다. Analyze 문제의 바이너리에 사용자 정의 함수를 보면 아래와 같다. ubuntu:~/environment/ctf/pwnable.xyz/26_catalog $ func challenge __libc_csu_fini __libc_csu_init _fini _init _start edit_name handler main print_menu print_name read_int32 setup win write_name gdb로 바이너리를 분석하여 c로 나타내면 아래와 같다. /* gdb-peda$ x/50gx 0x0000000000602280 0x602280 : 0x0000000000603260 0x0000000000000000 0x602290 : 0x0..
[pwnable.xyz] message write up
[pwnable.xyz] message write up
2020.02.25pwnable.xyz 20번째 message 문제이다. keyword: buffer overflow keyword: canary leak Analyze ubuntu:~/environment/ctf/pwnable.xyz/20_message $ func challenge __libc_csu_fini __libc_csu_init _fini _init _start get_choice handler main print_menu setup win gdb로 바이너리를 분석해서 c로 나타내면 아래와 같다. #include void print_menu(){ puts("Menu:\n1. Edit message.\n2. Print message.\n3. Admin?"); } int get_choice(){ char a = ..
[pwnable.xyz] rwsr write up
[pwnable.xyz] rwsr write up
2020.02.25pwnable.xyz 22번째 rwsr 문제이다. keyword: environ 변수로 stack 주소 Leak Analyze 해당 바이너리의 사용자 정의 함수는 아래와 같다. 이번에는 so 파일까지 주워젔다. ubuntu:~/environment/ctf/pwnable.xyz/22_rwsr $ func challenge __libc_csu_fini __libc_csu_init _fini _init _start handler main print_menu read_ulong setup win gdb로 바이너리를 분석해서 c로 나타내면 아래와 같다. #include void print_menu(){ printf("Menu:\n 1. Read\n 2. Write\n 0. Exit\n> "); } int read..
[pwnable.xyz] bookmark write up
[pwnable.xyz] bookmark write up
2020.02.25pwnable.xyz 24번째 문제 bookmark 이다. Analyze 해당 바이너리의 사용자 정의 함수는 아래와 같다. ubuntu:~/environment/ctf/pwnable.xyz/24_bookmark $ func challenge __libc_csu_fini __libc_csu_init _fini _init _start create_url handler init_login main print_menu read_long setup win gdb로 분석하여 c로 나타내면 다음과 같다. #include void init_login(){ int fd = open("/dev/urandom"); if(fd == -1){ exit(1); } read(fd, bm+256, 0x8); close(fd); } ..
[pwnable.xyz] uaf write up
[pwnable.xyz] uaf write up
2020.02.21pwnable.xyz 19번째 문제 uaf 이다. 이번 문제는 Use After Free 문제 인줄 알았지만, 전혀 아니었다... Analyze 해당 문제의 바이너리를 분석하면 아래와 같이 사용자 정의 함수가 많을 것을 알 수 있다. ubuntu:~/environment/ctf/pwnable.xyz/19_uaf $ func challenge __libc_csu_fini __libc_csu_init _fini _init _start calc delete_save edit_char handler initialize_game main print_menu read_int32 save_game setup win gdb 로 바이너리를 분석해서 c로 나타내면 아래와 같다. #include void initialize..