system hacking

Layer7 포너블 2차시 과제 - overwrite_variable32 풀이

leesu0605 2022. 9. 20. 23:50

일단 문제파일을 내려받아 아이다로 디컴파일해보았다.

s에 입력을 받을 때 버퍼 길이보다 더 큰 값을 입력해 s1에 PwnPwnPwnPwnPwnPwnPwnPwn이라는 문자열이 들어있게 하는 문제였다.

일단 C코드로 보는 건 버퍼 길이 계산할 때 부정확할 수 있으니 직접 어셈블리어를 보면서 크기를 계산해주었다.

s는 ebp로부터 0x28만큼 떨어진 곳에 위치해 있었고, s1은 0x14만큼 떨어진 곳에 위치해 있었다.
그러므로 20바이트의 더미값 + Pwn*8을 입력해주면 위의 strcmp 조건문을 통과하면서 쉘을 따낼 수 있을 것이다.

한 번 페이로드를 구성해보자.

sendlineafter의 두 번째 인자에 넣어준 값을 보면, 20바이트의 dummy + Pwn * 8을 보내주었고, 마지막에 interactive 함수로 직접 플래그를 읽을 수 있도록 해줬다.

성공적으로 공격이 먹혔고, whoami를 입력했을 때 권한이 제대로 따진 걸 볼 수 있다.
후에 플래그를 읽어주면 된다.

flag : L7{634fc1abd902de5b6e7853f2e681aea6}