slide-image

LOB

[Load Of Buffer overflow]

#02 :gremlin->cobolt

 

 

이번에도 옛날에 정리했던 걸 긁어왔다.

 

일단 밑의 ls 명령어 결과에서 보니 cobolt와 cobolt.c가 있길래 c코드부터 cat해보았다.

보니까 처음인자를 buffer[16]으로 strcpy하는데 버퍼의 크기는 16으로 정해져있지만, argv의 크기는 정해지지 않아서 발생하는 bof취약점이 있을 것 같았다. (뭔가 1번보다 많이 배운 느낌이다.)

 

...더보기

해보지는 않았지만 cobolt를 건드렸다가 이상해지면 안되니까 카피해서 gdb했다.

 

인텔로 어셈블리어를 맞추고, main을 디버깅했더니 strcpy위로 16크기 아마도 버퍼만큼의 크기를 확보하고, 그 전에도 4만큼의 크기를 확보하는 것 같았다. 저번 문제와 너무 똑같은 기분…

 

NOP SLEDING하려다가 귀찮아서 환경변수로 그냥 저번에 알게 된 쉘 코드 넣고 돌렸다.

 

원래 getenv.c였는데 오타가났다. 컴파일할때 바꿔줌. 환경변수 SHELL의 주소를 얻고 싶었다.

(이때는 코드는 짰나보다)

주소라 0xbfffff26이므로 이 주소를 리턴어드레스가 들어갈 것 같은 20바이트 다음에 위치시켰다.

해봤더니 성공

생각보다 잘해서 이번문제는 지금의 내가 쓸 말이 없다.

'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