본문 바로가기

Wargame/Pwnable.kr

Pwnable.kr fix-35pt 보호되어 있는 글입니다. 더보기
Pwnable.kr echo2-50pt 보호되어 있는 글입니다. 더보기
Pwnable.kr echo1-25pt 보호되어 있는 글입니다. 더보기
Pwnable.kr ascii-333pt 보호되어 있는 글입니다. 더보기
Pwnable.kr unexploitable-500pt 보호되어 있는 글입니다. 더보기
Pwnable.kr codemap-10pt 1000개의 힙 청크를 할당하고 문자열을 랜덤하게 집어넣는다고 한다. 그런데 반복 실행해보면 가장 큰 청크와 해당하는 문자열이 항상 동일함을 알 수 있다. 사실 이 문제는 IDA plugin인 codemap을 이용해야 sql 쿼리로 간단히 구할 수 있다. 하지만.. 내 PC에서 무슨 문젠지 모르겠지만 돌아가지 않더라.. 흠.. 다른 PC를 이용해볼까했지만 이 문제를 풀 당시엔 그럴 수 밖에 없었다. 힌트로 준 0x403E65를 가서 EAX와 EBX의 값을 살펴보자. Olly디버거로 키면 베이스가 달라지더라. 0x123E65에 break point를 걸고 EAX와 EBX를 보면된다. EAX는 할당한 힙 청크의 크기이고, EBX에는 문자열이 박혀있는 것을 볼 수 있다. 가장 큰 청크의 크기가 99879(0x.. 더보기
Pwnable.kr coin1-6pt 그냥 코딩 문제다. N과 C를 받고 가짜 동전을 100번 찾아야 flag를 출력해준다. 이진 탐색을 사용하면 주어진 시간내에 가능하다. flag!! 더보기
Pwnable.kr memcpy-10pt 소스 코드를 대강 살펴보면 먼저 src에 mmap() 함수로 0x2000만큼 할당한다. dest에 사용자가 입력한 숫자만큼 heap에 할당하고 slow_memcpy() 와 fast_memcpy()를 호출해 메모리 복사를 한 다. 가운데 dest를 출력하는 부분은 내가 작성해 넣은 부분이다. slow_memcpy() 함수는 1byte씩 그냥 복사하는 함수이고 fast_memcpy() 함수를 보면 처음보는 어셈들이 나온다.... 구글링을 조금 해보면 movdqa는 정렬된 주소의 16byte 값을 이동시키는 명령어이고, movntps는 xmm 레지스터의 16byte 값을 메모리에 옮기는 명령어이다. 두 명령어가 각각 4번씩 쓰였고, 주석의 '64-byte block fast copy'를 보면 64byte 단위.. 더보기
Pwnable.kr input-4pt Stage 1이다. argc가 100이 되어야하고 argv['A']가 '\x00'이 되어야하고 argv['B']가 '\x20\x0a\x0d'가 되어야 Stage 1이 clear된다. Stage 2이다. 4byte buf를 선언하고 콘솔 입력으로 '\x00\x0a\x00\xff'를 받아야 하고, 파일 디스크립터 2번(stderr)로 '\x00\x0a\x02\xff'를 받아야 clear할 수 있다. Stage 3이다. 이름이 '\xde\xad\xbe\xef'인 환경 변수에 '\xca\xfe\xba\xbe' 값이 써진 상태로 프로세스가 생성되어야 한다. Stage 4이다. '\x0a' 이름의 파일을 열고 4byte가 '\x00\x00\x00\x00' 가 되야 clear 된다. 마지막 Stage 5이다. arg.. 더보기
Pwnable.kr unlink-10pt unlink.c 소스를 보면 tagOBJ 라는 구조체를 선언하고 shell() 함수를 선언한다. system("/bin/sh") 함수가 있으므로 해당 코드 주소를 쉘을 따는데 이용할 수 있겠다. main() 함수를 보면 A, B, C 라는 포인터 변수를 선언하고 각각을 TagOBJ 구조체의 크기만큼 힙 영역에 할당한다. 이후 구조체 안의 멤버 포인터 변수 fd와 bk 를 이용해 A B C 형태로 서로 가리키게 한다. 포인터 변수 A의 값과 A가 가리키는 힙 영역을 각각 릭해 준 뒤 A가 가리키는 구조체의 buf에 제한 없이 gets() 함수로 입력 받는다. 즉, 힙 영역에 overflow 취약점이 발생할 수 있다. unlink() 함수 호출 직전(A의 buf에 'AAAAAAAA'를 입력)의 힙 영역 모습.. 더보기