picoCTF 2019 NewOverFlow-2 - Points: 250
문제

풀어봤어
아니 이 문제도 전까지 없었지요?
오버플로 공부하고 싶기 때문에 고맙습니다만.
소스를 봅니다.


조금 길다.
main()에서 가볍게 보면 vuln()을 불러 종료.
불리지 않는 flag()가 있다.
vuln()에서 main()으로 돌아갈 때 반환 대상을 flag()로 설정하면 되나요?
win_fn2()와 win_fn() 필요?
뭔가 함정?
함정 모르겠지만, vuln()의 리턴 주소를 변경하는 작전으로 해 보겠습니다.
우선은 flag()의 주소를 조사합니다.

flag()의 선두는 0x000000000040084d라는 것을 알았습니다.
자릿수가 많기 때문에 64bit 같습니다.

역시 64bit이었습니다.
다음은 vuln()의 리턴 주소가 저장되는 위치를 확인합니다.
적당히 200자 넣어 어떻게 되는지 확인합니다.

그래서 0x4e6a6b50이 저장되었습니다.
이것을 CyberChef에서 확인하십시오.
리틀 엔디안을 조심하십시오.

PkjN입니다.

73번째 문자였습니다.
그럼 여기를 flag()의 선두 주소인 0x000000000040084d로 합니다.

역시 잘 모르겠습니다만, 64bit때는 1개 쉬지 않으면 안 되는 것 같습니다.
그리고 win_fn2()와 win_fn()은 무엇이었습니까?
pwn 꽤 서투른 의식 있었지만, 이 정도의 이지 레벨이라면 사쿠로 풀 수 있게 되어 왔다.
Reference
이 문제에 관하여(picoCTF 2019 NewOverFlow-2 - Points: 250), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/samohan/items/d34c7e67b9dbf4cc8a33
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아니 이 문제도 전까지 없었지요?
오버플로 공부하고 싶기 때문에 고맙습니다만.
소스를 봅니다.


조금 길다.
main()에서 가볍게 보면 vuln()을 불러 종료.
불리지 않는 flag()가 있다.
vuln()에서 main()으로 돌아갈 때 반환 대상을 flag()로 설정하면 되나요?
win_fn2()와 win_fn() 필요?
뭔가 함정?
함정 모르겠지만, vuln()의 리턴 주소를 변경하는 작전으로 해 보겠습니다.
우선은 flag()의 주소를 조사합니다.

flag()의 선두는 0x000000000040084d라는 것을 알았습니다.
자릿수가 많기 때문에 64bit 같습니다.

역시 64bit이었습니다.
다음은 vuln()의 리턴 주소가 저장되는 위치를 확인합니다.
적당히 200자 넣어 어떻게 되는지 확인합니다.

그래서 0x4e6a6b50이 저장되었습니다.
이것을 CyberChef에서 확인하십시오.
리틀 엔디안을 조심하십시오.

PkjN입니다.

73번째 문자였습니다.
그럼 여기를 flag()의 선두 주소인 0x000000000040084d로 합니다.

역시 잘 모르겠습니다만, 64bit때는 1개 쉬지 않으면 안 되는 것 같습니다.
그리고 win_fn2()와 win_fn()은 무엇이었습니까?
pwn 꽤 서투른 의식 있었지만, 이 정도의 이지 레벨이라면 사쿠로 풀 수 있게 되어 왔다.
Reference
이 문제에 관하여(picoCTF 2019 NewOverFlow-2 - Points: 250), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/samohan/items/d34c7e67b9dbf4cc8a33텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)