분류 전체보기
-
[Toddler's Bottle] fd write-upSystem hacking training/pwnable.kr 2018. 7. 1. 02:47
pwnable.kr fd 문제를 풀었습니다. file descriptor 에 대한 문제임을 예상할 수 있었습니다. ssh로 remote 연결을 하여 진행을 하는 방식입니다. 접속하여 ls 명령어로 어떤 파일들이 있는지 보니 fd라는 실행파일에 setuid가 걸려있습니다. fd.c는 fd에 대한 소스코드인듯 합니다. LOB와 비슷합니다 ㅎㅎ 바이너리 이름에서부터 알 수 있듯이 이 문제는 fd 즉 파일 디스크립터에 관한 문제입니다. 먼저 코드 분석을 해보았습니다. 1. argc 즉 인자가 파일명 빼고 하나 더 있어야 합니다. 2. fd라는 변수에 atoi()로 argv[1]을 받아 정수형으로 반환하고 0x1234를 뺀 뒤 저장합니다. 3. len 변수에 read()의 return 값을 저장합니다. 4. re..
-
LEVEL 18 nightmare write-upSystem hacking training/Hackerschool LOB 2018. 6. 27. 09:03
succubus -> nightmare nightmare문제를 풀었으니 LOB도 얼마 남지 않았네요 ㅎ 생각해보면 꽤 오래 끌었군요...! FTZ 는 6개월 정도가 걸린것 같은데 LOB도 3개월 정도 걸리겠네요 ㅎㅎ (언제 갓되는지..) 암튼 문제는 이렇습니다. 코드 분석부터 하겠습니다. 1. 인자에 바이너리명 빼고 한개 더 줘야한다. 2. check address에서 char 형 포인터 변수 addr에 strcpy()의 PLT를 받아와서 argv[1]+44 즉 ret 공간의 주소값과 memcmp()를 통해 비교를 하여 다르다면 예외처리를 하며 바이너리를 종료한다. 3. overflow! 부분에서 strcpy()를 이용하여 buffer에 argv[1]의 값을 때려박는다. 4. dangerous water..
-
BoB 7기 면접 후기tmp/Tip 2018. 6. 25. 20:43
멘탈을 간신히 부여잡고 BoB에 대해 글을 써보려고 합니다.. 일단 올해 저는 탈락을 하였고 면접을 보고난 후에 느낀점, 조금의 팁을 공유할까합니다. 먼저 문제점에 대해 얘기를 해보겠습니다. [문제점] 1. 컨설팅 트랙에 대한 이해도 즉 트랙에 대한 이해도가 부족하였습니다. -> 트랙을 결정할 때 취약점 분석 트랙과 컨설팅 트랙에 대해 고민을 많이 하였습니다. 저는 주변에 BoB 지인이 없기 때문에 구글링을 하며 트랙에 대한 정보를 찾아보았는데요. BoB Wiki를 찾게 되었습니다. 트랙 소개부분을 보면 컨설팅이나 정책 관련해서 배운다는 일반적인 사실과 취약점 트랙의 사람들이 컨설팅 트랙 수업을 청강하고 나서 "여기가 취약점이네.." 라고 말을 했다는 부분이 있는 만큼 컨설팅에서도 취약점에 대한 부분이 ..
-
LEVEL 17 succubus write-upSystem hacking training/Hackerschool LOB 2018. 5. 17. 20:42
zombie_assassin -> succubus 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394[zombie_assassin@localhost zombie_assassin]$ cat succubus.c/* The Lord of the BOF : The Fellowship of the BOF - succubus - calling functions continuously */ #include #include #include // the ..
-
DEFCON CTF Qualifier 2018 ghettohacker:Throwback write upCTF Write-Up 2018. 5. 15. 04:38
ghettohacker:Throwback write up 궁금해서 write up을 보고 풀어보았다. 근접했지만 풀지 못한 아쉬운 misc 문제다. text 라는 이름의 파일이 주어지는데 먼제 hex dump를 떠봤다. Anyo!e !ho would sacrifice po!icy for execu!!on speed think !security is a comm!dity top !urintoasy!tem!. 아스키코드 부분에 Anyo!e 라는 단어를 시작으로 쭉 문자열이 나열되어있어서 !에 해당하는 문자를 채워줘봤다. Anyone who would sacrifice policy for execution speed thinks security is a commodity top our in to a syste..
-
DEFCON CTF Qualifier 2018fkillrra ?/CTF 2018. 5. 15. 04:05
데프콘에 처음 참가해봤다. 처음에 You Already Know 라는 warmup 문제를 30분만에 풀이하고 자신감을 얻어서 8시간을 CTF하는데에 쏟았다. 문제를 오래봐서 그런지 이전의 CTF에서는 write up이 궁금하지 않은 상태로 대회를 종료했는데 이번에는 꽤 오래동안 고민했던 ELF Crumble warmup 문제와 gettohacker:Throwback misc 문제를 어떻게 푸는지 write up 이 궁금해졌다. 먼저 1문제를 풀었으니 생색내기 위해서 write up 을 작성하려고 했는데 사이트가 닫혀서 작성할 수 가 없다. ㅠ.ㅠ 간단 write up : 이 문제는 클릭을 하자마자 서버에서 response가 온다. 거기서 000{} format에 맞는 flag값을 찾으면 된다. 이후 EL..
-
LEVEL 16 zombie_assassin write-upSystem hacking training/Hackerschool LOB 2018. 5. 13. 17:09
assassin -> zombie_assassin 소스코드를 분석해보면 힌트부분에 FEBP라는 중요한 힌트가 있다. Fake EBP라는 기법을 이용하면 풀릴것같다. 인자는 2개 이상이여야하고, argv[1][47]이 이전 문제와 동일하게 \xbf, \x40이면 예외처리가 된다. 그리고 strncpy()로 buffer에 argv[1]의 값을 48개 받기 때문에 bof가 터진다. 이 문제의 의도에 맞게 Fake ebp 기법을 이용하여 문제를 풀면된다. Fake ebp에 대해서는 자세하게 따로 다루기로 하고 페이로드를 짜는 요령만 먼저 익혀보자. 사실 Fake ebp 는 FPO와 매우 유사하기 때문에 풀이가 쉬웠다. 먼저 페이로드의 구성은 다음과 같다. `python -c 'print "dummy(4byte)..
-
LEVEL 15 assassin write-upSystem hacking training/Hackerschool LOB 2018. 5. 13. 15:37
giant -> assassin [문제 + 힌트] 소스코드 먼저 분석을 해보면 argc가 2이상 즉 인자값이 2개 이상이여야하고 argv[1][47] 가 \xbf 혹은 \x40이면 안된다. 저 말은 return 할 주소가 \xbf 로 시작하는 스택의 어느 공간도 안되고 \x40으로 시작하는 코드영역도 안된다는 것이다. 그리고 취약점은 strcpy()의 사용으로 인해서 bof가 터진다. 그 후 memset()로 buffer+SFP를 0으로 초기화하면서 프로그램이 종료된다. 이 문제는 간단하게 ret가젯을 이용하여 쉽게 우회가 가능하다. ret의 주소는 \xbf도 \x40도 아니기 때문에 ret 가젯을 이용하여 system()를 불러오던 환경변수에 쉘코드를 넣고 쉘코드를 실행시키던 할 수 있다. objdum..