본문 바로가기

WHOIS/Pwnable

(3)
Whois 9주차 문제 풀이 과제 1. ilovepwn 이번 문제는 다음과 같다. 전역 배열 변수 fakekey에 임의의 인덱스 에다가 입력을 줄 수 있다. 그리고 두 번째 전역 배열 변수 key와 "ILOVEPWN"이라는 문자열을 비교하는데 해당 바이너리에서 fakekey 임의의 인덱스에 입력을 받을때 범위 검증을 하지 않기 때문에 oob취약점이 발생한다. 해당 oob 취약점을 이용해서 fakekey배열을 벗어나 key 배열에 우리가 원하는 값을 넣어주면 된다. 해당 exploit 코드를 실행하면 shell을 얻을 수 있다. 2. Part-time Job ida를 통해 보자 main함수 전체를 보지 않고 해당 부분까지만 보겠다. 우리가 shell를 얻을려면 v4
Whois 8주차 문제 풀이 과제 1. assembly 이번 문제는 다음과 같다 그냥 https://defuse.ca/online-x86-assembler.htm#disassembly 에서 mov rax, 0x77 mov rbx, 0x88 mov rcx, 0x99 sub rax, 0x10 다음과 같이 작성한 후 돌리면 나오는 String Literal 값이 FLAG이다. 2. passcode 문제는 다음과 같다 ida로 main함수를 확인하면 다음과 같다. read함수에서 buf에 0x30이나 받기 때문에 bof 취약점이 발생하시만 generate_passcode 함수를 주목해보자 인자로 들어간 src에 총 8byte의 난수를 생성하여 넣는것을 확인 할 수 있다. 그 후 main함수로 돌아와서 strcncpy로 전역 변수 save에 넣는..
Whois 7주차 문제 풀이 과제 1. Student ID 1번 문제는 다음과 같다. 문제를 다운 받고 IDA로 봐보면, v5가 0x499602D2면 flag를 준다. scanf로 길이 제한 없이 v4부터 입력 받으니깐, 28개 A로 덮고 남은 4byte는 0x499602D2 로 덮어주면 풀린당 다음과 같이 exploit 코드 작성 후 실행하면 FLAG를 얻을 수 있다. 2. Magic Spell 2번 문제는 다음과 같다. 바로 IDA로 확인을 해보자 main에서 sepll1이라는 함수를 호출 해준다. spell1을 따라가 보자 spell1은 다음과 같다. scanf로 v1에다 길이 제한 없이 입력을 받고 v2가 0x4d와 같으면 다음 spell2를 호출한다. 다음으로 spell2를 보자 spell2는 다음과 같다 bss 영역에 있는 b..