티스토리 뷰

pwnable/LOB

[LOB] gremlin -> cobolt write-up

ba0bab 2018. 1. 26. 16:43






LOB gremlin -> cobolt


id : gremlin

pw : hello bof world




코드입니다.


버퍼의 크기가 16인데 strcpy를 통해 bof가 가능합니다.


bof를 이용해서 ret을 조작해주면 될 것 같습니다.


하지만 쉘코드를 스택프레임안에 넣을 수 없을 것 같습니다. 16이 너무 작아서 입니다.


그래서 환경변수 기법 또는 RTL기법으로 풀어야 할 것 같은데 저는 환경변수 기법을 이용해서 공격을 해보겠습니다.


먼저 분석을 위해서 tmp폴더를 만들고 cp하겠습니다.


어셈블리 코드입니다.


스택 프레임을 16만큼 형성하였습니다.



ebp-16, 즉 esp부터 strcpy가 됩니다.


따라서 메모리구조는


buf(16) | sfp | ret 이 구조가 될 것 같습니다.


ret을 쉘코드가 담긴 환경변수의 주소로 바꿔주면 될 것 같습니다.


환경변수를 등록하겠습니다.




getenv함수를 이용해 환경변수의 주소를 찾아보겠습니다.




0xbffffe94 입니다.


페이로드를 구성해보겠습니다.


./cobolt `python -c ‘print “A”*20+”\x94\xfe\xff\xbf”’` 하면 될 것 같네요.


tmp파일에 공격을 해보겠습니다.


쉘이 실행되었습니다.


실제 파일에 공격을 해보겠습니다.



권한이 상승 되었습니다.


cobolt의 키는 hacking exposed 입니다.



'pwnable > LOB' 카테고리의 다른 글

[LOB] wolfman -> darkelf write-up  (0) 2018.01.27
[LOB] orc -> wolfman write-up  (0) 2018.01.27
[LOB] goblin -> orc write-up  (0) 2018.01.27
[LOB] cobolt -> goblin write-up  (0) 2018.01.26
[LOB] gate -> gremlin write-up  (0) 2018.01.26
Comments