nc 0 9026으로 접속하면 asm프로그램이 실행될거고 문제의도에 알맞은 shellcode를 넣으면 flag가 나온다고 한다.



위와 같이 프로그램을 실행하면 

이 문제에서는 SECCOMP 샌드 박스에서 x64 쉘 코드를 실행해야 한다.

open () / read () / write () 시스템 호출만 사용하여 플래그가 나오는 쉘 코드를 만들도록하십시오. 라고 나와 있다.



stub[]= 부분을 명령어 형태로 보니 

아래와 같이 모든 레지스터를 초기화를 한다.


파일을 메모리에 대응시키기위해 mmap함수를 이용해서 메모리에 0x1000공간을 만들어준다.

그다음에 memset을 통해서 0x1000공간을 모두 NOP로 채워주고

memcpy를 이용해서 sh시작 주소에 stub[]를 채워주고 strlen(stub)를 이용해서 offset 값을 구해준다

그후에 read(0, sh+offset,  1000)을 수행하기 때문에 결국 sh에는 

stub[]+내가 넣은 쉘코드

와 같은 구조가 될 것이다.

chroot는 가상의 루트 디렉토리를 생성하므로 심볼릭 링크도 불가능하다.

그후에 sandbox함수가 실행되고

sh()이 한번 실행된다.


쉘코드를 만들어서 넣어야하는데 콜 할 수 있는 함수는 read, open, write, exit만 주어져 있다.

쉘코드를 구성해보면 아래와 같다.

pwntool을 이용하면 shellcode도 편하게 만들 수 있다..





'System Hacking > pwable.kr' 카테고리의 다른 글

19.pwnable unlink  (0) 2018.03.10
17.pwnable memcpy  (0) 2018.02.28
16.pwnable uaf  (0) 2018.02.26
15.pwnable cmd2  (0) 2018.02.23
14.pwnable cmd1  (0) 2018.02.23

+ Recent posts