본문 바로가기

system/writeup

2014 plaidCTF kappa

kappa

2014 plaidCTF kappa

싸우는 도중 포켓몬을 바꿀 수 있는 4번 히든 메뉴 존재

 

기본으로 주는 Bird Jesus의 체력을 나타내는 곳이 379번 째 인덱스고, kakuna의 체력을 나타내는 곳은 다른 곳이다. Charizard도 마찬가지. 즉 저 값은 kakuna의 입장에서는 \x0이며 Charizard의 입장에서는 ascii_art가 있는 곳이 된다.

이걸 써먹을 곳이 없는데 기본 포켓몬으로만 싸우라는 건가...

 

그리고 포켓몬이 다 차면 원래 있던 자리에 포켓몬을 덮어씌우는데 포켓몬 랭크에 관한 정보는 덮어씌우지 않는다.

 

포켓몬 정보를 출력하는 함수를 호출하는 부분이다. 이 부분을 덮어씌우면 쉘을 딸 수 있을 것 같다.

 

Charizard의 artwork 크기가 kakuna의 artwork 크기보다 크기 때문에 artwork 변경 창에서 kaknuna의 함수 호출 부분을 덮어씌울 수 있다!

 

그리고 이 부분에서 health, attack power는 %d로 출력해줘서 leak이 붉능해 attack쪽에서 해야 하는데, **로 접근한 곳이 주소여야 돼서 got를 attack에 넣어 leak을 하는게 아니라 plt+2를 attack에 넣어 leak을 해야 한다.

 

익스플로잇 흐름도는 다음과 같다.

overwrite
artwork_overflow
artwork_overflow
Charizard
kakuna
kakuna
leak
shell

이건 좀 힘들게 풀었네요 ㅠ shell~!~!


'system > writeup' 카테고리의 다른 글

pwnable.tw orw  (0) 2019.01.09
2017 codegate angrybird  (0) 2019.01.09
2017 codegate messenger  (0) 2019.01.07
2017 codegate hunting  (0) 2019.01.06
2017 codegate babymisc  (0) 2019.01.05