pwnable(115)
-
exploit-exercise Fusion level-01
fusion1번 문제입니다. 처음에 jmp esp라는가 어째서 내 쉘코드를 실행시키는지 확실하지않아서 조사를 많이해봐서 이를 요약해서 알려드리겠습니다. 먼저 소스코드입니다. 취약점은 이전문제와 같이 realpath내에 memset이 있기때문에 발생하는 취약점으로 판단됩니다. 일단 문제 조건은 : ASLR만 걸려있습니다. 따라서 스택내에서 실행권한이 있는것이죠 1. jmp esp 가젯을 찾는다.2. 리턴값에 jmp esp를 준다.3. esp가 가르키는 위치는 $"jmp esp"로 바뀐다.4. 이때 esp는 바로 자기자신 위에있는 함수를 스택의 끝주소로 판단한다.-> esp란 ? 하나의 스택 프레임의 끝 지점 주소가 저장된다. PUSH, POP 명령어에 따라서 ESP의 값이 4Byte씩 변한다 5. 따라서 ..
2018.08.12 -
exploit-exercise Fusion level-00
맞습니다.. 다음과제는 exploit-exercise funsion이였습니다 :) lob와 비슷해보이는데 조금더 리얼한 코드같습니다. 코드를 먼저확인하죠. 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include "../common/common.c" int fix_path(char *path){ char resolved[128]; if(realpath(path, resolved) == NULL) return 1; // can't access path. will error trying to open//취약점 각 becuase memcmp strcpy(path, resolved);} char *parse_..
2018.08.10 -
pwnable.kr - collision
먼저 코드부터 확인해보면 다음과 같습니다. 프로그램상 실행하면서 인자값으로 데이터를 전달받기때문에 값은 인자로 넘겨주면될 것 같습니다. 조건1 : 인자1개이상 넣어주기조건2 : 길이 20byte로 맞추기조건3 : hashcode와 함수를 통과한 넣어준 값일치하게하기 함수를 보면 인자로 받은 값을을 4byte씩 끊는 것을 볼 수 있습니다. 이렇게 총 5번을 나눠서ㅁㅁㅁㅁ/ㅁㅁㅁㅁ/ㅁㅁㅁㅁ/ㅁㅁㅁㅁ/ㅁㅁㅁㅁ이렇게 만들고 이거를 배열로 가정하였을때[0] + [1] + [2] + [3] + [4] = hashcode가 되어야합니다. 그럼 hashcode를 5로 나누면 될 것 같습니다.이대로 exploirt코드 작성해서 익스해주면?? 왜 안되지...라고 생각했는데 프로그래머계산기는 나머지를 버릴수밖에 없어서 21..
2018.08.03 -
LOB ALL CLEAR
앗..드뎌 올클이다!
2018.08.03 -
LOB - 20. xavius -> death_knight
드뎌 LOB마지막 문제입니다! 이번문제 진짜삽질 많이했어요...후...이게 그냥 익스였으면 삽질 조금만하고 풀 수 있었겠지만..원격으로 익스하는거라 리버스쉘 찾는데 삽질..로컬이아닌 외부 서버 리눅스로 하면서 삽질...ip부분이 lob의 ip인지 제 우분투ip인지 삽질..이렇게저렇게 하긴했는데 많이 연습해야 할 것 같네요 ㅎㅎ 소스코드를 봅시다! 윗부분은 거의다 서버여는 코드같고 아랫부분만 bof가 일어나는 부분이군요 저부분을 그냥 익스한다면 인자값이 들어가는위치 찾아서하면 간단하겠지만,소켓통신으로 서버를 열기때문에 무작위로 대입해줘야할 것 같습니다!파이썬 코드는 http://blog.c2w2m2.com/22 코드를 많이 참고하였습니다! 리버스 쉘코드는 아래 링크를 참고해주세요!http://shell-s..
2018.08.03 -
FC3-5 evil_wizard -> dark_stone
이번문제도 전문제와는 크게 다른게 없는거같은데 로컬익스가아닌 원격으로 익스를 해야하는 것 같다! 먼저 소스코드 확인하고 저번과 같이 구해야하는 요소들을 나열해봅시다.ROP를 위해서 1.system2. printf@plt3. printf@got4. strcpy@plt5. ppr6. "/bin/sh"7. .bss 앗 이걸 왜구하냐고요?? rop하는 방법은 바로 plt에 덮기, bss에 넣었다가 한번에 호출해서 덮기가있는데 바로 덮으면 나눠서 덮어서그런지 exploit이 안되더라고요.. 그래서 4번과 다르게 이번에는 bss에 넣어서 호출하였습니다. 그럼 하나씩 구해보죠!일단 버퍼크기 확인하고, 1.system 2. printf@plt 3. printf@got 4. strcpy@plt 5. ppr 6. "/bi..
2018.08.03