본문 바로가기

CTF

(51)
Pwnable.xyz pwnable_two_target Write up got_overwrite 문제이다. 나름 재밌었던 문제였던거 같기도하고, 일단 IDA로 까보자~ int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int index_input; // eax char name; // [rsp+10h] [rbp-40h] __int64 nationality; // [rsp+30h] [rbp-20h] __int64 age; // [rsp+40h] [rbp-10h] unsigned __int64 v7; // [rsp+48h] [rbp-8h] v7 = __readfsqword(0x28u); setup(argc, argv, envp); memset(&name, 0, 0x38uLL); // nam..
Pwnable.xyz pwnable_GrownUpRedist Write up 포맷 스트링 버그 문제이다. 또 strcpy 관련된거 도 들어있는 합성된 문제이다. 나름 풀만했다. 일단 flag가 바이너리 안에 존재했다. 아마 포맷스트링으로 저거 불러오라는거같다. int __cdecl main(int argc, const char **argv, const char **envp) { char *src; // [rsp+8h] [rbp-28h] __int64 buf; // [rsp+10h] [rbp-20h] __int64 v6; // [rsp+18h] [rbp-18h] unsigned __int64 v7; // [rsp+28h] [rbp-8h] v7 = __readfsqword(0x28u); setup(argc, argv, envp); buf = 0LL; v6 = 0LL; printf("..
Pwnable.xyz pwnable_xor Write up 보호되어 있는 글입니다.
Webhacking.kr webhacking_old-web-06 Write up 개쉽다... 이것만 보고 그냥 base64 20번 하는거같아서 코드짜서 해봤더니 풀렸다. 밑에 어드민하고 패스워드있으니 이걸로 base64 20번 돌리면 풀리는 문제이다. import base64 plaintext = 'nimda' #admin for i in range(0,20): plaintext = base64.b64encode(plaintext) print plaintext
Pwnable.kr pwnable_loveletter Write up 나름 괜찮은 문제였다. 딱 50점에 걸맞는 문제였던거같다. int __cdecl main(int argc, const char **argv, const char **envp) { char s[256]; // [esp+10h] [ebp-114h] size_t v5; // [esp+110h] [ebp-14h] size_t v6; // [esp+114h] [ebp-10h] size_t v7; // [esp+118h] [ebp-Ch] unsigned int v8; // [esp+11Ch] [ebp-8h] v8 = __readgsdword(0x14u); memset(loveletter, 0, 0x100u); // addr_love_letter = 0x804a0a0 v6 = strlen(epilog); // str..
Pwnable.kr pwnable_tiny_dragon Write up 일단 먼저 기법에 대해 설명하면 간단한 UAF문제이다. 굳이 힙에 개념을 전부 파악하지 않아도 풀수있는 문제이다. 그냥 UAF가 어떤 개념인지만 알아도 충분히 풀수있는 문제이다. int PlayGame() { int result; // eax while ( 1 ) { while ( 1 ) { puts("Choose Your Hero\n[ 1 ] Priest\n[ 2 ] Knight"); result = GetChoice(); if ( result != 1 && result != 2 ) break; FightDragon(result); } if ( result != 3 ) break; SecretLevel(); } return result; } 일단 먼저 MAIN 함수이다. main함수를 보면 밑에있는 S..
Pwnable.kr pwnable_fix Write up 보호되어 있는 글입니다.
Pwnable.kr pwnable_tiny_easy Write up 33점 문제치고는 좀 골떄리는 문제인거같다. 처음에 어떻게 해야될지 몰라서 헤멧었다. 그냥 실행해도 코어 덤프가 되었는데 처음에 진짜 너무 몰라서 해멨었따. 아오 코드에 처음과 끝이다. start 심볼이 있는데 일단 인자를 받아와주는거같다. gdb로 확인해봤는데 자꾸 뭔지 몰라서 헷갈렸다. 그러던중 core를 한번 확인해보자 해서 확인해봤더니 인자로 점프뛰는것을 확인할수 있었다 일단 꿀팁이므로 명령어를 적어놓겠다. 내가 준 인자로 점프를 뛰는것을 알수있다. 그럼 시나리오를 짜보면, 일단 메모리 보호기법이 없다. 즉 쉘코드가 사용이 가능하다. 음... 그럼 생각을 해보자. 일단 ASLR이 걸려있다. 흠... 그럼 브루트 포스를 해야되나... 스택에 값이 계속 바뀌므로 스프레이 형식으로 NOP이 달린 쉘코드..