$ 시스템 해킹 $
-
Level3 (cobolt -> goblin)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:15
소스 코드를 확인해 보면 이번에는 gets()함수를 이용해서 입력을 받습니다. gdb를 이용해서 dummy 값이 있나 확인해 보겠습니다. 16만큼의 크기가 할당 되었습니다. buffer + SFP + RET 의 스택을 가지고 있습니다. core dump 를 떠 보겠습니다. core를 분석해서 RET의 주소를 확인해 보겠습니다. 53535353의 주소 맨처음이 0xbffffb30이므로 해당 값을 이용해서 BOF를 일으켜 보겠습니다. login : goblin Password : hackers proof 환경변수로 풀이하는 문제풀이는 이전에 사용한 방법과 같기때문에 생략하겠습니다.
-
Level2 (gremlin -> cobolt)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:12
소스 코드를 확인해 보겠습니다. 소스코드가 매우 level1과 같습니다. 똑같은 방식으로 풀이을 해보겠습니다. 이번에도 dummy 없이 정확히 16인것으로 보아 Buffer + SFP + RET 형식으로 되어 있습니다. 환경변수에 쉘코드를 입력해 보겠습니다. 사용한 쉘코드는 25바이트의 쉘코드 입니다. \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 해당 sh이름의 환경변수의 주소를 찾기 위해서 코드를 작성해 보겠습니다. gcc -o 를 이용해서 컴파일해서 실행해 보겠습니다. 페이로드를 작성해 보겠습니다. login : cobolt Password : hacking expo..
-
Level1 (gate -> gremlin)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:10
시스템 해킹을 매우 하기 싫었지만.. cve 분석을 해야하는데 거의 대부분의 cve에는 시스템해킹적인 요소가 포함되어 있어서 열심히.. 해야할거 같습니다. login : gate Password : gate gremlin 실행파일과 해당 실행파일의 소스코드인 gremlin.c가 존재 합니다. 주석처리로 되어있는 부분을 보면 기본적인 BOF 라고 설명이 되어 있습니다. buffer의 크기는 256으로 되어있고 취약점 함수인 strcpy가 사용 되어 있습니다. strcpy함수를 이용해서 bof를 실행 시키면 될 것 같습니다. 한번 gdb를 이용해서 한번 확인해 보겠습니다. FTZ를 했던 저는 할당 값이 dummy 가 없는 256 이라는 점에서 좀 당황스러웠습니다. 그 이유는 gcc의 버전이 낮아서 dummy..
-
[Toddler's Bottle] 5번.[passcode]$ 시스템 해킹 $/pwnable.kr 2018. 12. 2. 11:09
이번에 풀어볼 문제는 pwnable.kr의 5번문제인 [passcode] 문제 입니다.주요한 passcode.c 파일이 있네요 한번 확인해 보겠습니다.코드를 살펴 보면 main() -> welcome() -> login() 이 순서대로 들어가는 것을 알 수 있습니다.welcome()에서 이름을 입력 받은 뒤에 login()에서 passcode1,passcode2를 입력 받아서 if문으로 비교 해서 맞으면 /bin/cat flag를 실행 시키는 방식으로 이루어진 코드 인 것 같습니다. 한번 코드를 실행시켜서 338150와 13371337을 넣어보겠습니다.Segmentation fault 즉, 세그먼테이션 오류가 나네요 그 이유를 보니 scanf에서 &가 없습니다.&변수 형태가 변수가 들어있는 주소이고, 이..
-
[Toddler's Bottle] 3번.[bof]$ 시스템 해킹 $/pwnable.kr 2018. 12. 1. 23:17
이번에 풀어볼 문제는 pwnable.kr의 3번문제인 [bof] 문제 입니다.문제를 보니까 download가 있으니 한번 다운 받아 보겠습니다.URL 이 있기 때문에 wget 을 사용했습니다. 파일을 한번 확인 해 보겠습니다 음.. 일반폴더 하나와 c언어로 작성된 코드가 하나 있네요 내용을 확인해보면 func함수로 들어가서 값을 출력하는거 같은데..Key 값과 0xcafebabe와 일치해야 /bin/sh에 있는 flag가 나오는 코드인거 같네요 Key값은 func에 있는 0xdeadbeef 인거 같은데… 실행을 한번 해보겠습니다. 실행권한을 부여해주고 실행을 해보니 값을 입력 받으려고 하는거 같네요 저기에있는 0xcafebabe를 입력해보겠습니다. 안나오는 걸 보니 gdb를 이용해서 한번 리버싱 해보겠습..
-
[Toddler's Bottle] 4번.[flag]$ 시스템 해킹 $/pwnable.kr 2018. 11. 30. 22:33
이번시간에 풀어볼 문제는 www.pwnable.kr 의 4번째 문제 [flag]입니다.키워드를 한번 뽑아보면 packed // reversing // need binary 리버싱을 이용해야 하는 문제인거 같네요 일단 저 url을 이용해서 다운로드를 받아줍니다.그리고 파일이 무엇인지 확인합니다.실행했을때 힌트를 받을수도 있기 때문에 실행파일로 바꿔 봅시다.실행파일로 바뀌었다는 걸 알수 잇습니다. 실행을 한번 해보겠습니다. malloc() (동적할당) 과 strcpy 그리고 flag를 그곳에 둘것이니 가져가라 라는 뜻같네요 파일 분석을 한번 해보면..그냥 ELF형식의 64비트라는것을 알수 있네요. 32비트가 아니라는것은 알수 있었습니다. 그러면 이제 gdb을 이용해서 리버싱을 한번 해보겠습니다.gdb로 들어..
-
[Toddler's Bottle] 2번.[collision]$ 시스템 해킹 $/pwnable.kr 2018. 11. 29. 17:00
이번에 풀어볼 문제는 pwnable.kr의 2번문제인 [collision] 문제 입니다. (* 사정상 이번에는 cmd를 이용해서 문제를 풀겠습니다. )MD5 해시 라는 말이 보이네요 ssh를 통해서 한번 문제로 들어가 보겠습니다. ls -l 명령어를 통해 무슨 파일이 있는지 확인해 보겠습니다. col, col.c , flag가 있네요 flag는 접근 불가능 하고 col.c를 읽어 봐야 할거 같네요.Hash code 가 16진수로 되어있네요. 대충 코드를 살펴 보니 argc는 2보다 커 야하고 길이는 20이어야 합니다. Hashcode 16진수를 10진수로 변환해 보겠습니다. 0x21DD09EC -> 568134124 Check_password함수를 보면 입력 받은 p의 주소 값을 포인터형 변수 ip에 집..
-
[Toddler's Bottle] 1번.[fd]$ 시스템 해킹 $/pwnable.kr 2018. 11. 29. 11:24
처음으로 www.pwnable.kr 1번문제를 보면 다음과 같습니다.맨 아래줄에 있는 ssh fd@pwnable.kr -p2222 를 이용해서 문제에 접속하기입력 후에 guest를 비번으로 입력ls 명령어를 이용해서 무슨 파일이 있는지 확인합니다.fd.c 파일과 fd파일 flag파일이 있네요. 그러면 fd.c파일의 내용을 확인 해보겠습니다.fd을 실행할때 argc라는 변수를 같이 입력해야 실행이 되는 파일입니다.argc는 2 이상이어야 하고 int fd = atoi(argc[1])을 보면 값이 0x1234 라는것을 알수 있습니다. 0x1234는 16진수 값이기 때문에 10진수로 바꿔줘야 합니다. 0x1234 = 4660입니다.엔터 하면 입력을 계속 받으려고합니다. 다시 코드를 보면 if(!strcmp("..