-
[Pwnkr] Shellshock Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 1. 23:31
이번 문제는 Shellshock 문제이다. 감이오지 않아서 우선 힌트를 보았다. 그리고 코드를 보았다.코드를 보았더니 그냥 문득 들었던 생각은 FTZ문제들이 떠올랐다. 뭔가 FTZ 초반에 나왔던 연속적인 명령어 실행이나 어떠한 실행파일이 실행시에 지니는 권한을 이용하는 문제같다는 느낌이 들었다. 해볼 것도 없었지만 shellshock 실행파일을 실행시켜보았더니shock_me라는 문자열이 출력되었다. 뭔가 내가 모르는 어떠한 취약점을 이용한 공격이라는 생각이 들었고shellshock를 검색해보았다. 그랬더니 역시나 shellshock bash shell 취약점이존재한다는 것을 알게 되었다. 그래서 이 취약점을 공부해보았다. 이 취약점은 bash shell에서 임의의 환경변수에 특정 코드를 삽입하여실행할 수..
-
[Pwnkr] Mistake Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 1. 23:30
이번 문제는 Mistake 풀다보니까 풀려버린문제다;; 우선 코드를 보도록 하자.파란상자는 주어진값들과 입력받은 값을 XOR연산하는 함수가 정의된 내용이고빨간상자는 이상하다고 느껴서 표시를 해두었다. 첫 번째 빨간상자를 보면 open을 기준으로 양쪽에 " = " 와 " " 가 있다. 흠.. 여기서 힌트를 떠올려 보게 되었다.operator priority ??? 연산자 우선순위?? 힌트를 통해 연산자 우선순위에 대한 문제라고 예상할 수 있었다. 이 문제에서 중요한 것은 우선순위이다. " 비교연산자가 대입연산자보다 우선순위가 높다!! " 첫 번째 빨간상자의 if문을 보면 password파일이 저 경로에 있기 때문에양수값..
-
[Pwnkr] Random Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 4. 1. 02:25
이번 문제는 그냥 계산 문제였던 것 같다..코드를 보도록 하자~ rand()함수를 이용해서 랜덤값을 random이라는 변수에 저장해주고내가 입력한 key 값과 random값을 XOR 연산해서 0xdeadbeef가 나오면 Flag를 볼 수 있다. 하지만 저런식으로 rand()함수를 사용하게되면 매번 똑같은 값이 나온다는 걸아주 옛날에 코딩을 하면서 알게된 적이 있었다. 그러므로 gdb로 무슨 값이 저장되는지 보도록 하자. 0x6b8b4567 = 1804289383이 계속 나오게 된다.그러므로 KEY ^ 1804289383 = 0xdeadbeef(3735928559)가 나오면 된다. 그러므로 3735928559 ^ 1804289383 == KEY가 될 것이다.3735928559 ^ 1804289383 = 3..
-
[Pwnkr] Passcode Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 3. 31. 20:42
Passcode... 갑자기 어려워졌다고 느꼈다.. 실제로도 푸는데 시간이 많이 걸렸다.. 코드를 보도록 하자많은 부분에서 입력을 받는데 일단 Bof가 일어날만한 부분은 없었다.또한 passcode1과 passcode2의 값에 조건을 걸어서 조건을 통과하면flag를 보여주는 형태이다. 한 가지 이상함을 느낀 부분은 바로scanf 함수이다. &가 없이 passcode1의 변수를 사용하고 있었다. 아마 이 부분이 취약한 부분이 될 것 같았다. 프로그램을 한 번 실행시켜 보았다.처음 name 값은 문자가 가능했지만 passcode1을 입력받을 때 숫자를 입력하니 Segmentation fault가 발생했다. 쩝.. 그래서 이번에는 문자열을 입력해보았더니 그 다음 단계로 갈 수는 있지만 Login Failed가..
-
Zwave Vulnerability Analysis 단편 영화Hacking/Z-Wave 2019. 3. 30. 18:21
Team WYP(What is Your Protocol)의 Zwave Vulnerability Analysis 단편 영화입니다.해당 영상 제작에 도움을 주신 멘토님들과 PL형, WYP 팀원들에게 감사합니다.그리고 도움을 주신 모든 분들께 감사드립니다.(PL형 집을 내주셔서 감사합니다^^, dork94 카메라 감사요~) 해당영상은 2019 Codegate 해킹시연공모전 최우수상을 수상하였습니다. 해당 영상에 등장하는 해킹을 함부로 진행하시거나 타인에게 피해를 주는 행위는불법입니다. 또한 영상에 등장하는 모든 시나리오 관련 공격은 순수 연구목적으로테스트베드에서 시행되었으며 모두 본인들의 소유인 제품들을 사용하였음을 알려드립니다. 기사 URL : https://www.dailysecu.com/news/arti..
-
Best of the Best 7기 수료식과 후기!!Best of the Best & 바깥이야기 2019. 3. 29. 22:40
(실명을 사용하고 싶지만 혹시나 하는 마음에 최대한 사용하지 않았습니다ㅠ) 2019년 03월 29일 Best of the Best 7기 수료식을 했다.ㅠㅠ18.07.02 ~ 19.03.29 정말 많은 일이 있었던 것 같다. 무엇보다 좋았던 것은열정이 넘치는 친구들을 한명씩 알아갈 수 있었다는 것과 최고의 멘토님들의가르침을 배우면서 소통을 할 수 있다는 것이었다. 단순히 해킹관련 경험 뿐만이 아니라 프로젝트를 통해 팀워크의 중요성도 알 수 있었고 "함께하면 멀리갈 수 있다" 라는교훈도 얻게되었다. 정보는 공유할수록 발전한다는 것과 치열한 경쟁이 아닌 서로Win Win 하는 법도 깨닫게되었다. 학교에만 있었다면 알 수 없었던넓은 세상을 볼 수 있었던 시간들이었..
-
[Pwnkr] Horcruxes -> Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 3. 29. 22:04
이번 문제는 horcruxes이다!! Py0zz1의 추천으로 먼저 풀어보게 되었다!!해리포터 시리즈를 읽어봤다면 알 수 있는 그 호크룩스의 문제였다.(몰라도 풀 수 있음 ㅋ) 볼드모트를 죽이기 위해서는 볼드모트의 영혼이 담긴 7개의 호크룩스를 부셔야하는데.. 코드를 보도록 하자!! readme 파일을 보면 우선 9032포트에 접근해서 바이너리를 실행해야함을 알 수 있었고rop를 이용해야지 flag를 읽을 수 있다는 힌트를 받을 수 있었다. 프로그램을 실행시켜보니 메뉴에 대한 입력을 받고 EXP(경험치)값을 또 받는다. 대충 1234를 입력해보니 볼트보트를 죽이기 위해서는더 많은 경험치가 필요해 보인다. 그러므로 저 경험치 값을 알아내야 이 문제를풀 수 있다는 것을 알 수 있었다. 우선 분석을 위해 바이너..
-
[Pwnkr] Flag Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 3. 28. 19:53
이번 문제는 packing에 관련된 문제였다. 파일의 정보를 보도록 하자. 64bit 형식에 statically linked가 되어있으며 stripped이다. -> stripped이므로 디버깅이 불가능하다!! 실행을 시켜보니 그림과 같은 문자열만 출력되었다. 뭐지?? 전혀감이오지 않았다.... 혹시몰라서 hex editor를 이용해서 파일을 열어보았다. 오잉? UPX?? UPX로 패킹이 되어있었다!! 아직까지 감은 안오지만 일단 upx.exe를 이용해서 언패킹해보았다. 언패킹을 하였더니 stripped가 -> not stripped가 되면서 디버깅이 가능했다. 바이너리를 gdb로 디버깅해보았더니 바로 flag라는 녀석이 보였다. 위의 사진처럼 print flag로 바로 볼 수도 있고 아래처럼 그냥 따라가..
-
[Pwnkr] Bof Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 3. 26. 01:15
이번 문제의 이름은 bof이다. 다운로드 받은 bof의 소스코드를 보도록 하자. 버퍼의 크기는 32개인데 우리가 입력할 수 있는 입력 수의 제한이 없다. 그러므로 gets함수에서 bof를 일으킬 수 있다는 것을 알 수 있었다. 이 때 key의 값이 0xcafebabe여야만 쉘을 딸 수 있는데 이 값을 우리가 입력하는 값이 아닌 이미 인자로 넘겨진 값 0xdeadbeef가 존재했다. 스택의 구조를 생각해보면 key가 버퍼인 overflowme보다 높은 곳에 존재한다.그러므로 버퍼를 오버플로우 시켜서 key값을 cafebabe로덮게되면 쉘을 따낼 수 있다는 것을 알게되었다.우리가 해야하는 것은 바로 이 key값의 위치를 알아야한다. func 함수의 어셈블리어 코..
-
[Pwnkr] Collision Write-up표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019. 3. 26. 00:32
이번에 풀어볼 문제는 Collision이다.문제를 먼저 보았더니 힌트로 추정되는 문장이 보였다. MD5 hash collision?? MD5는 단방향 암호화이기 때문에 출력값으로부터 입력값을 복원할 수 없다.같은 값을 입력값이면 항상 같은 출력값이 나오며 서로 다른 값을 입력할 경우 같은 출력값이나올 확률을 매우 낮지만 같은 값이 나올 가능성은 존재한다. 예를 들어 "ABCD"와 "EFGH"를 MD5 했는데 해시값이 똑같을 수도 있다는 것이다. 이러한 가능성을 이용하여 MD5로 암호화했을 때 같은 MD5 해시값을 갖는 문자열이발생하는 상황을 바로 MD5 hash collsion이라고 한다. 소스코드를 보도록 하자!!코드를 보게되면 hashcode라는 값을 주어줬고 우리가 넘기는 인자의 길이가20byte가..