티스토리 뷰
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
최근에 올라온 글
최근에 달린 댓글
TAG
- srop
- exit
- 해킹
- stack reusing
- TLS
- heap
- tcache
- ebp change
- FSB
- codegate
- rt_sigreturn
- oob
- fsop
- pwnable
- pwable
- pwnable.tw
- hacking
- glibc
- HackCTF
- shellcoding
- SQLi
- fastbindup
- overflow
- 본선가고싶다
- fastbin
- Total
- Today
- Yesterday