네 좋아요 영혼의 집을 살펴보죠 이전 영상에서 얻은 취약점을 복사해서 제자리를
잡거나... 제가 할 거예요 아니면 이전 영상에서 주석으로 된 취약점을 활용하거나
? 자원
스크립트 맨 밑을 훑어 말록과 마지막으로 통화한 부분을 삭제해 'age'와 'username'은
무시해도 된다 우리의 관심사는 늘 그렇듯 글립코에 집중할 것이기 때문이다
네 먼저 '이름' 변수를 수정할 거예요 나머지 반은 포인터로
흘러넘쳐서 영혼의 집이 되는 거죠
네 이전 영상에서 배웠듯이 기본값 힙보다 높은 주소에서는 가짜 보통 덩어리를
사면 안 됩니다 감형을 받아야 하죠
네 말똥가리를 노리려면 가짜 고리 크기는 패스트빈으로 제한해야 합니다
네 가장 먼저 떠오르는 방법은 1부에서 패스트빈덥을 할 때 썼던
0x7f 덩어리를 빼는 거예요 말록 갈고리 바로 앞에 있고 IO vtl
포인터를 써서 안정적으로 만들어지니까요
하지만 안 된다는 걸 알죠 0x7f 크기의 필드는 세트 비트가 3개거든요 우리 프리미티브 영혼의
집이 실패할 겁니다 IS_MAPPED 비트 N_Main_ARENA 비트 네 번째로 중요하지 않은
비트요
맞아요 안 되는 이유가 또 있어요 이전 영상에는 없던 조치예요
네 pwntools 스크립트를 현재 상태로 실행하면 gdb와 NOASLR 옵션과 함께요 그럼 말록 훅 근처의 가짜 덩어리를
제거하려 할 겁니다 ???
예상대로 GDB는 멈출 거예요
하지만 무료 프레임으로 바꾸고 문제가 발생한 근원을 확인하면
완화를 촉발한 걸 알 수 있죠 풀려난 청크의 크기를 확인하기 전에요
네 두 가지를 확인합니다 먼저,
자유로운 청크가 v.a. 우주 본부를 감싸는지 확인합니다
두 번째는 16바이트가 나란히 놓여 있는지 여부입니다 힙의 구성 특성과 이 아키텍처에서
덩어리 크기는 항상 16바이트의 배율이기 때문에 올바른 배열은 절대 어긋나지
않습니다
여러분 이번 기회에 정령정의 습격에 필요한 제약을 되짚어
보도록 하죠
말록 말록의 갈고리를 노리려면 가짜 고물이 패스트빈 범위에 있어야 해요 일반
덩어리는 기본값 더미 위 주소에선 못 풀거든요 ?
가짜 덩어리 중에서 2, 3, 4번째로 덜 큰 부분은 깨끗해야 해요
아니면 완화되거나 세그폴트를 유발할 거예요
16바이트 일치하나 봐요
그리고 명심하세요 우리는 적절한 위치에 적절한 가치를 갖춘 다음 규모의 영역을 제공해야 합니다
네 이 프로파일에 맞는 자연 발생 데이터를 찾거나 libc 데이터를 매수할 수 있다면
정말 대단하겠지만 지금 우리가 갈 길은 아니에요
이 문제에 어떻게 접근할지 잠시 생각해 보세요
목표는 말똥가리고 8가지 요구가 있습니다
잘 들어요 명심해요 libc가 유출됐을 뿐 아니라 엄청난 유출도 있어요 취약점 스크립트의 '엄청난' 변수에
저장돼 있죠
지금 영상을 멈추고 좋은 생각이 있는지 봐요 효과가 있을 것 같으면 돌아오기
전에 해 봐요
네 이걸 보고 계신다면 이미 껍데기가 있으니 아주 잘하셨어요 그게 아니라면
부디 합법적인 덩어리를 피할 계획을 세우셨길 바라요 합법적인 덩어리보다 합법적인
덩어리가 어디 있겠어요? 안 그래요?
좋아요 다음 시나리오를
생각해 봐요 세 덩어리를 요청하는데 그중 두 개는 적합한 패스트빈 사이즈고 세 번째는 어떤 사이즈든 가능해요
,
버그를 써서 3번째 m_배열 엔트리를 덮어쓰는 거야 첫 번째 사용자
데이터 주소로 유출 덕에 알게 된 주소
네 유출이 안 되더라도 포인터를 최소한의 바이트로 통제해서
쓸 수 있다면 같은 효과를 낼 수 있어요
다음으로 요청한 순서대로 덩어리를 풀어줍니다 A, B, C 순서로요 A 덩어리를 꺼내면 적절한 패스트빈에
연결하고 B 덩어리를 넣습니다 하지만 free는 3번째 m_array
엔트리에서 청크 c를 풀어주는 대신 청크 a를 다시 풀어줍니다
네 패스트빈 둡 기법에서 이 패턴을 보셨을 겁니다 패스트빈 더블 프리
완화 우회술이죠
원시적인 영혼의 집을 패스트빈 둡 원시인으로 바꾸는 거죠 네 이 예제에서는 제대로 된 덩어리를 사용했습니다
누수가 있으니까요 하지만 쉽게 같은 방법을 써서 메모리의 다른 곳에 가짜 패스트
덩어리를 더블프리 할 수 있습니다 ?
네 제가 형식을 만들었어요 영혼의 집을 이용해 이중 무료 시나리오를 설정했죠 화면에 이렇게
나와 있어요 강의 리소스에서 복사본을 다운로드하세요 이 견본으로 영혼의 집을 통해 탄피를
떨어뜨리는 연습을 할 수 있어요
네 패스트빈 둡에서 배운 걸 잘 활용해야 해요 1부 실험에서요
네 말록 내부는 이미 살펴봤고 이용 기술도 많이 익혔으니 이 쌍성체에서
나오는 건 알아서 하세요
강의를 듣다가 막혔거나 이 방법을 다시 사용하고 싶으시다면 강의 자료에서 두 가지 주석을 남긴 솔루션 스크립트를
참고해 주세요
네 첫 번째 작업은 이 템플릿에 맞춰 외피를
제거하는 겁니다 두 번째는 누수를 완전히 무시해도 같은 결과를 얻죠
여러분 영혼의 집과 활용할 수 있는 다양한 방법에 익숙해지면
다음 영상에서 로어 하우스에 관해 배워 보죠