본문 바로가기

Codegate 2015 - Bookstore 메모리 보호기법이 있는대로 다 걸려있다. 이런 문제는 처음이라 당황스러웠는데eip를 컨트롤하기 위해 주소값을 알아내야 하고, 이를 위해메모리릭이 필요한 점 외에 다른 부분은 크게 신경쓰지 않고 풀었다. 책 정보에대한 구조체.특이한점은 alloca함수에 의해 스택에 메모리가 할당된다는 점과 함수포인터를 2개 가지고 있다는 점.전체적인 흐름을 보면 구조체가 스택을 통해서 복붙하는 방식으로 진행된다.아래 함수를 보면.. 이 부분을 통해 스택에 스프레이식으로 임의의 값을 뿌릴 수 있는데, 특정 조건에 따라 eip컨트롤이 가능하다. 과정이 살짝 복잡한데 UAF 유형 문제와 비슷하게 생각하면 쉽다. 변수 free_ship에 대한 세팅 (위 그림에서 v14변수)이 0일경우구조체 내부에 존재하는 함수포인터를 초기화하지.. 더보기
B-Sides Vancouver 2015 - Ownable 400 왜 Ownable 이라고 되있는건지는 모르겠다NX만 적용되어있다. Character를 재설정하는 과정에서, read_data 함수 내부에서 오버플로가 발생한다. 하지만 아래와 같이 \n, \x0 ~ \x1f, \x7f 은 필터링 되는 부분이므로 이부분을 피해서 입력이 가능하다. 필터링을 우회하는 부분은 이부분을 통해 해결헀다.먼저 위 그림(Generate_dungeon함수 내부)에 보면, 던전의 레벨을 입력하는 부분이 있는데unsigned __int8 자료형인 v6 변수에 입력을 받는다, 하지만 다음 조건절에서는 (char)형으로 형변환되므로255(0xFF)를 입력해주면 조건절을 통과할수 있다.그리고 mmap을 통해 할당되는 메모리는 0x2015000 + 255 * 0x1000 이 된다. 0x201500.. 더보기
Codegate 2015 푼거 + 풀다만거 정리 보호되어 있는 글입니다. 더보기
pwnable.kr :: maze 150pt by ORANG. 보호되어 있는 글입니다. 더보기
Exploit-Exercise :: fusion level04 by ORANG. [2015. 03. 02 ] 수정 타이밍 어택 문제. 이런 유형은 처음이라 신기했다.소스를 보면 패스워드를 비교하며, 일치할 때와 일치하지 않을 때, 1/400초 정도 차이가 생긴다.-> 브루트 포싱을 방지하기 위해 넣었다고 한다.(주석)이 점을 이용하여 시간을 재면, 정확한 패스워드를 찾아낼 수 있음을 이용하면 패스워드 인증을 통과할 수 있다.한글자씩 패스워드를 넣어주어 시간차이를 통해 찾아냄. 리모트 환경에서 오버플로를 통해 SSP를 우회하는 방법을 찾던 중, 이 자료가 도움이 많이 되었다http://www.hackerschool.org/Sub_Html/HS_Service/DocuTrans/View_All.html?uid=5 Position Independent Executable(PIE)가 적용된 .. 더보기
pwnable.kr :: rsa_calculator 200pt by ORANG. 보호되어 있는 글입니다. 더보기
pwnable.kr :: nuclear 222pt by ORANG 보호되어 있는 글입니다. 더보기
pwnable.kr :: blackjack 1pt by ORANG 보호되어 있는 글입니다. 더보기
pwnable.kr :: lotto 2pt by ORANG 보호되어 있는 글입니다. 더보기
pwnable.kr :: echo2 50pt by ORANG 보호되어 있는 글입니다. 더보기