분류 전체보기
-
[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가..