GobliN
-
Level4 (goblin -> orc)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:16
소스코드를 확인해 보겠습니다. egghunter이란 환경변수 부분을 0으로 초기화 하는 역할을 하는데, 그래서 이전에 사용한 환경변수 관련된 문제 풀이는 사용할 수 없습니다. 그리고 argv의 47번째 바이트가 \xbf 인지 확인 합니다. buffer의 크기 40바이트 + SFP 4바이트 + RET 4바이트 = 48바이트 하지만 argv[1]의 47번째 바이트가 \xbf 인것으로 보아 RET 첫번째 주소의 시작값이 \xbf 라는 것을 알수 있습니다. 또한 gdb로 열어보면 코드 영역은 0x80~~의 주소를 가지고있고 우리가 필요한 \xbf 는 Stack 영역에 있는 주소입니다. 이제 한번 core dump를 해보겠습니다. RET에 들어가야하는 주소를 찾기 위해서 gdb -q -c core 명령을 통해 알..
-
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 환경변수로 풀이하는 문제풀이는 이전에 사용한 방법과 같기때문에 생략하겠습니다.
-
[Lord of SQL_injection] #3 goblin$ 웹 해킹 $/los.rubiya.kr 2019. 2. 10. 22:55
2번 문제였던 cobolt와 매우 비슷합니다. Id가 admin이여야 clear가 됩니다. 여기까지는 그냥 똑같은데 난이도가 조금 올라 갔습니다.필터링이라고 해서 어떠한 문자를 못쓰도록 해둔 것입니다. 해당 코드에서는 ' 이랑 " 이랑 ` 를 필터링 해뒀습니다. 문자열 전송하기 위해서는 ' 또는 " 가 필요한데 없이도 전송시키는 방법이 있습니다. 바로 16진수로 전송하고자 하는 문자열을 적어주면 되는 것 입니다. 그럼 한번 문제를 풀어 보겠습니다.?no=0 or id=0x61646d696e 라고 입력해서 clear가 떳지만 no=1이라고 한번 해보겠습니다Clear가 뜨지 않았습니다. no=1은 guest인것 같습니다.no=1을 제외한 나머지 아무숫자나 넣으면 clear라는 문구가 나옵니다. 다른 방법 :..