exploit in local & EOF in remote

요즘 계속 로컬에서는 셸을 따는데 리모트에서 계속 EOF가 걸린다. 이때 생각해야 할 것들을 정리해보았다.

sendline , send

가장 기본적인 것들이다. scanf는 sendline read 는 send로 맟추어야 한다. 또한, 바이트 수를 잘 계산해서 설계를 해야 한다.

ubuntu version

최근 문제를 풀면서 가장 크게 당했다. 우분투 버전에 따라 아예 스택이 달라지던 문제였다.

도커파일도 없어서 안심하고 있었지만, 절대 안심하면 안된다. 딱봐도 문제될것 같은 스택 위치를 감각으로 아는 것이 중요

libc version

libc 버전에 대한 이야기인데 어떻게 보면 당연한 소리이다. local의 libc와 서버의 libc가 다른 것인데

이건 주로 드림핵에서 제공한 Dockerfile으로 완하된다.

근데..

위에 글 상황을 충분히 생각을 해야 할것 같다.

align problem

아마 모두 알다시피 스택 정렬 관련 문제이다.

when send big byte to server and EOF

https://dreamhack.io/wargame/challenges/359?writeup_page=6

해당 문제에서 큰바이트를 보낼때 MTU때문에 EOF가 난다는 사람이 많았다. 물론나는 1500인데도 문제가 없었지만, 조심해야 할 것 중 하나이다.

mmap problem

mmap으로 익명 페이지를 생성할때 이 페이지가 libc 뒤에 생성되나 혹은 앞에 생성되나 이 페이지 문제로 로되리안을 겪었다. 이럴때 mmap의 크기를 결정할 수 있으면 크기를 바꿔보면서 mmap이 생기는 위치를 바꿔보면서 해야한다.

만약 계속 같은데 생성된다면, 아예 도커를 삭제했다 다시 해보자.

libc version 2

최근에 정말 고생했던 부분이다..

일단 사건의 발단은.. 이렇다

C
(pwn) amemoyoi ~$ cat Dockerfile
FROM amd64/ubuntu:22.04

바로 다음과 같이 일반적으로 도커버전이 적혀있는 부분이 단순히 되어 있다. 근데 이러면.. 정말 심각한 문제가 생긴다.

바로 도커를 빌드하는 시점에 따라 다른 환경이 펼퍼지는 것..

자세한 내용은 다음참조..