LOB(8)
-
lob 11번 풀이 skeleton -> golem
보호되어 있는 글입니다.
2019.11.16 -
lob 10번 풀이 vampire -> skeleton
버퍼 40, i 4, saved_argc 4 총 48 byte를 할당 받았습니다. 조건 1. argv를 2개 이상 넣어야 함, 2. egghunter 때문에 환경 변수를 사용하지 못합니다. ' 3. argv[1][47]은 '/xbf'가 되어야 합니다. 4. argv[1]의 길이가 48을 초과해서는 안 됨. 5. buffer, argv 공간을 사용하지 못 함. 혹시나 이렇게 생각할 수 있다. strcpy 부분에서 seved_argc의 공간을 오버플로우 시킬 수 있지 않을까? 라고 말이다. 메모리 구조를 표현하면 위와 같다. 이 부분이 strcpy 함수의 부분을 가져온 것인데 ebp-40부분에 접근하여 사용한다. 여기서 오버플로우를 시키면 버퍼보다 높은 주소에 있는 변수나 공간들은 오버플로우 시킬 수 있지만..
2019.08.17 -
lob 9번 풀이 troll -> vampire
힌트입니다. 이번에는 argv[1][46]번째가 '\xff'가 아니어야 합니다. 16진수는 A < B < C < D < E < F 순 이므로 F보다 1 작은 것은 E 입니다. 따라서 메모리 효율을 위해 우리는 \xfe로 argv[46]의 공간을 만들어주면 되는데 스택의 주소는 (인텔 기준) 높은 주소에서 낮은 주소로 자라므로 가장 높은 주소는 (커널포함) FFFFFFFF이 됩니다. 커널이 1kb이므로 BFFFFFFF가 되므로 BFFFFFFF-BFFEFFFF= 0x10000 10진수 65536이므로 NOP을 65536개 이상 넣어주면 FE가 되겠죠? 따라서 argv[1]을 이용해 strcpy 부분에서 ret에 argv[2]의 주소를 넣어주고 그 주소는 65536을 뺸 가장 주소이므로 이렇게 gdb를 쓰지 ..
2019.08.14 -
lob 8번 풀이 orge -> troll
이제 인자를 더도말고 덜도말고 꼭 2개를 넣어주어야 하네요. 그리고 이젠 argv[1]까지 맨 밑에 부분에서 초기화를 시켜줍니다. 그런데 이 부분이 오버플로우 결함이 있는 함수인 일단 ret의 주소를 넣어줄 수는 있을거 같네요. argv[0] 공간을 쓸 수 있지 않을까요? 저번처럼 심볼릭 링크로 쉘코드를 넣어주면 되지 않을까요? 오오 쉘코드로 진짜 이름이 만들어지네요. (코어파일은 블로그 쓰기 전 노가다 테스트 때문에 있습니다.) 이제 ret의 넣을 값을 argv[0]의 주소로 만들어주면 될거 같아요. segment fault가 일어나서 core 파일이 있으니까 한 번 분석해봅시다. 0xbffffb50라는 쉘코드가 있는 주소를 찾았습니다. 아까 잘 안 돼서 찾아보니까 /x2f가 아스키코드로 /여서 잘 안..
2019.07.28 -
lob 7번 풀이 darkelf -> orge
darkelf로 로그인을 해준다. cat 명령어를 사용하여 orge.c를 보면 다음과 같은 부분이 나오는데 친절하게 "here is changed"라고 써져 있다. argv[0]은 파일명이 들어가는 부분이다. 따라서 다음말은 파일명이 77자(77byte)가 되어야한다는 말이 된다. 링크 파일 - 리눅스에 파일 형식에는 링크 파일이란 것이 있다. 이는 윈도우의 바로가기 아이콘과 비슷하고 링크 파일의 종류로는 크게 심볼릭 링크와 하드 링크가 있다. 심볼릭 링크 : 컴퓨터에서 심볼릭 링크(symbolic link) 또는 기호화 된 링크는 절대 경로 또는 상대 경로의 형태로 된 다른 파일이나 디렉터리에 대한 참조를 포함하고 있는 특별한 종류의 파일이다. 쉽게 말해 파일을 가리키는 파일이라고 보면 될거 같다. 다..
2019.07.28 -
lob 6번 풀이 wolfman -> darkelf
wolfman으로 로그인 해줍니다. 더 추가된 부분은 check the length of argument 부분인데 만약 argv[1]이 48보다 크면 프로그램을 종료하는 부분이 생겨났습니다. 그런데 그동안 저희는 argv[1]의 개수를 딱 48개를 넣어줬으므로 딱히 상관없는 부분이라고 생각됩니다. 그 전과 같이 argv[2]의 주소를 ret의 넣으면 될거 같습니다. tmp를 만들어줍니다. core 파일을 분석해서 풀어봅시당!! 주소를 0xbffffc30로 잡고 하겠습니다. 쉘코드 \x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x5..
2019.07.27