<Wargame & CTF> 42

[Pwnable.kr] loveletter

#Pwnable.kr #loveletter #Rookiss loveletter 문제이다. main 함수의 처음 부분이다. 전역변수 loveletter 256 바이트를 0으로 셋팅 해놓고, epilog 와 prolog 문구의 길이를 산출해내어 지역변수에 저장해놓는다. 해당 전역변수들은 후에 사용된다. 그리고 256 바이트짜리 배열 s 에 값을 입력받는다. 취약점 촉발의 시작이다. 그리고 protect 함수에 s 를 집어 넣고 "약간" 의 s 배열 손질을 한다. protect 함수에서의 문제 로직은 대강 이러한데 strcpy 부분에 있는 특수문자 목록에 있는 문자가 s 에 있으면 즉시 멈춰서 해당 부분에 0xA599E2 를 때려박는다. 이 부분은 정확히 3바이트를 넣는 것처럼 보이지만, 디버거에서 보면 dw..

[Pwnable.kr] brainfuck

#Pwnable.kr #brainfuck #Rookiss brainfuck 문제이다. main 함수부터 까보면 위와 같이 생겼다. 단순히 fgets 로 입력받아오는 것처럼 보인다. 입력 받은 값을 전달하는 do_brainfuck 함수를 보자. do_brainfuck 함수의 모습이다. main 함수를 다시보면, tape(0x0804A0A0) 전역변수 값을 받아오는 전역변수 p(0x0804A080) 가 있는데 do_brainfuck 에서는 이 p 변수를 가지고 포인터조작을 할 수 있는 함수이다. " 결론적으로는 got_overwrite 문제이다. " 시나리오는 다음과 같다. p 변수와 멀리 떨어지지 않은 곳에 위와 같은 got table 이 존재하는데, 이곳은 do_brainfuck 함수에서 문자로 원하는 ..

반응형