본문 바로가기

Code Engn - Basic 02 RCE 파일이 손상되어 있어, 실행자체가 안되는 상황.일단 헥스에디터로 확인해봤는데, (처음엔 봐놓고도 key인줄 몰랐다..) 보니까 key가 존재했다. 코드 엔진 사이트에 Auth를 확인하는 부분이 바로 확인되지 않아서 쫌 그랬는데.. 찾아보니 CodeEngn Basic RCE Auth 인증기[출처] CodeEngn Basic RCE Auth 인증기|작성자 해피용 ( ( http://blog.naver.com/93immm/220196816080 ) -> 고맙게도 어떤분이 Auth 인증기를 만들어두심 더보기
Code Engn - Basic 01 RCE C드라이브를 CD-ROM 형태로 인식하게끔 만들면 되는 문제.GetDriveTypeA 함수를 통해 값을 얻으므로, 반환값을 조작하면 된다. 함수의 반환값은 EAX를 통해 전달되므로, GetDriveTypeA 의 반환값은 3이 된다.(하드디스크이므로) GetDriveTypeA 함수의 반환값을 찾아보니 아래와 같았다.CD-ROM의 경우 5이므로, EAX를 5로 조작하여 통과 (다른 방법을 이용해도 CMP-JE 조건만 맞추면 된다.) 더보기
pwnable.kr :: crypto1 120pt by ORANG. 보호되어 있는 글입니다. 더보기
pwnable.kr :: tiny 600pt by ORANG. (version 2) 보호되어 있는 글입니다. 더보기
pwnable.kr :: softmmu 666pt by ORANG. 보호되어 있는 글입니다. 더보기
pwnable.kr :: wtf 100pt by ORANG. 보호되어 있는 글입니다. 더보기
pwnable.kr :: otp 100pt by ORANG. 보호되어 있는 글입니다. 더보기
pwnable.kr :: syscall 200pt by ORANG. 보호되어 있는 글입니다. 더보기
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.. 더보기