[LOB] gremlin->cobolt
2019. 3. 28. 14:19
LOB
[Load Of Buffer overflow]
#02 :gremlin->cobolt
이번에도 옛날에 정리했던 걸 긁어왔다.
일단 밑의 ls 명령어 결과에서 보니 cobolt와 cobolt.c가 있길래 c코드부터 cat해보았다.
보니까 처음인자를 buffer[16]으로 strcpy하는데 버퍼의 크기는 16으로 정해져있지만, argv의 크기는 정해지지 않아서 발생하는 bof취약점이 있을 것 같았다. (뭔가 1번보다 많이 배운 느낌이다.)
...더보기
![](https://blog.kakaocdn.net/dn/be0bNu/btqtWiEGhfu/LlPj5Kue1VprvlGcyZOFr1/img.png)
![](https://blog.kakaocdn.net/dn/yMVve/btqtUjkwaeM/ABiFfiNJgIL3PoGfRE5k01/img.png)
![](https://blog.kakaocdn.net/dn/buQj9h/btqtUjLDhH1/zDQdsgCNA5ohSHsjy0lNkk/img.png)
![](https://blog.kakaocdn.net/dn/bmVhYg/btqtWhTlmra/DcCsFESBKB6zOo0toxkbCk/img.png)
![](https://blog.kakaocdn.net/dn/Fo8l6/btqtVeiIuVQ/f0OopnJS4IMd4W0ovW87vK/img.png)
해보지는 않았지만 cobolt를 건드렸다가 이상해지면 안되니까 카피해서 gdb했다.
![](https://blog.kakaocdn.net/dn/be0bNu/btqtWiEGhfu/LlPj5Kue1VprvlGcyZOFr1/img.png)
인텔로 어셈블리어를 맞추고, main을 디버깅했더니 strcpy위로 16크기 아마도 버퍼만큼의 크기를 확보하고, 그 전에도 4만큼의 크기를 확보하는 것 같았다. 저번 문제와 너무 똑같은 기분…
![](https://blog.kakaocdn.net/dn/yMVve/btqtUjkwaeM/ABiFfiNJgIL3PoGfRE5k01/img.png)
NOP SLEDING하려다가 귀찮아서 환경변수로 그냥 저번에 알게 된 쉘 코드 넣고 돌렸다.
![](https://blog.kakaocdn.net/dn/buQj9h/btqtUjLDhH1/zDQdsgCNA5ohSHsjy0lNkk/img.png)
원래 getenv.c였는데 오타가났다. 컴파일할때 바꿔줌. 환경변수 SHELL의 주소를 얻고 싶었다.
(이때는 코드는 짰나보다)
![](https://blog.kakaocdn.net/dn/bmVhYg/btqtWhTlmra/DcCsFESBKB6zOo0toxkbCk/img.png)
주소라 0xbfffff26이므로 이 주소를 리턴어드레스가 들어갈 것 같은 20바이트 다음에 위치시켰다.
해봤더니 성공
![](https://blog.kakaocdn.net/dn/Fo8l6/btqtVeiIuVQ/f0OopnJS4IMd4W0ovW87vK/img.png)
생각보다 잘해서 이번문제는 지금의 내가 쓸 말이 없다.
'Wargame > LOB(Redhat)' 카테고리의 다른 글
[LOB] goblin->orc (0) | 2019.03.28 |
---|---|
[LOB] cobolt->goblin (0) | 2019.03.28 |
[LOB] gate->gremlin (0) | 2019.03.28 |
[LOB] golem->darkknight (0) | 2019.03.22 |
[LOB] skeleton->golem (0) | 2019.03.21 |