picoCTF 2019 OverFlow 1 - Points: 150
문제
풀어봤어
소스를 살펴보겠습니다.
flag()가 실행되면 flag의 내용이 표시될 것 같습니다.
그렇지만, flag()는 어디에서도 불려 있지 않습니다.
처리의 흐름으로서는
30行目のmain()が実行される。
36行目の処理で23行目のvuln()に移動する。
28行目でvuln()が終わって呼び出しもとの次の処理37行目に移動する。
終了。
라는 느낌입니다.
vuln()에서 main()으로 돌아가는 주소를 괴롭히고 flag()로 날리는 작전으로 좋을까.
즉 28행째의 vuln()이 끝났을 때에 「다음은 37행째예요」라고 하는 처리를 재기록해 「다음은 11행째예요」라고 하면 된다.
라고 이론은 알고도 실제 할 수 있는지는 모른다.
우선 쉘에서 실행해 보겠습니다.
실행해 보겠습니다.
실행하면 1회 입력 상태가 되고 무언가 입력하면 점프의 주소가 표시되어 종료한다.
이 표시되는 주소는 소스를 본 곳
vuln이 돌아 오는 곳의 주소처럼 보입니다.
그렇다면 긴 문자를 넣으면 스택이 다시 쓰여져 여기의 주소도 다시 쓸 것입니다.
긴 문자를 넣어보십시오.
아까의 실행으로 점프처는 「0x8048705」라고 하는 것을 알고 있습니다.
이 첫 번째를 보면 "0x8048705"로 맞습니다.
2번째가 점프처가 2개 나오는 의미는 잘 모릅니다.
3번째를 보면 「0x8040061」로 바뀌고 있습니다. 61은 a의 의미입니다.
a를 늘릴 때마다 61이 늘어나는 것을 알 수 있습니다.
그래서 이것으로 다시 쓸 수 있습니다.
다음은 flag()의 주소입니다.
gdb ./vuln
실행 후
그렇게하면 플래그의 주소를 알 수 있습니다.
「0x80485e6」입니다.
*라든지&는 잘 모르겠습니다.
모두 해 보았습니다만, 모두 함께의 결과였습니다.
리틀엔디안에 주의하면서 실행하면
그래서 Flag가 나왔습니다.
Reference
이 문제에 관하여(picoCTF 2019 OverFlow 1 - Points: 150), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/samohan/items/ed6985c45bb9f909fbd2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
소스를 살펴보겠습니다.
flag()가 실행되면 flag의 내용이 표시될 것 같습니다.
그렇지만, flag()는 어디에서도 불려 있지 않습니다.
처리의 흐름으로서는
30行目のmain()が実行される。
36行目の処理で23行目のvuln()に移動する。
28行目でvuln()が終わって呼び出しもとの次の処理37行目に移動する。
終了。
라는 느낌입니다.
vuln()에서 main()으로 돌아가는 주소를 괴롭히고 flag()로 날리는 작전으로 좋을까.
즉 28행째의 vuln()이 끝났을 때에 「다음은 37행째예요」라고 하는 처리를 재기록해 「다음은 11행째예요」라고 하면 된다.
라고 이론은 알고도 실제 할 수 있는지는 모른다.
우선 쉘에서 실행해 보겠습니다.
실행해 보겠습니다.
실행하면 1회 입력 상태가 되고 무언가 입력하면 점프의 주소가 표시되어 종료한다.
이 표시되는 주소는 소스를 본 곳
vuln이 돌아 오는 곳의 주소처럼 보입니다.
그렇다면 긴 문자를 넣으면 스택이 다시 쓰여져 여기의 주소도 다시 쓸 것입니다.
긴 문자를 넣어보십시오.
아까의 실행으로 점프처는 「0x8048705」라고 하는 것을 알고 있습니다.
이 첫 번째를 보면 "0x8048705"로 맞습니다.
2번째가 점프처가 2개 나오는 의미는 잘 모릅니다.
3번째를 보면 「0x8040061」로 바뀌고 있습니다. 61은 a의 의미입니다.
a를 늘릴 때마다 61이 늘어나는 것을 알 수 있습니다.
그래서 이것으로 다시 쓸 수 있습니다.
다음은 flag()의 주소입니다.
gdb ./vuln
실행 후
그렇게하면 플래그의 주소를 알 수 있습니다.
「0x80485e6」입니다.
*라든지&는 잘 모르겠습니다.
모두 해 보았습니다만, 모두 함께의 결과였습니다.
리틀엔디안에 주의하면서 실행하면
그래서 Flag가 나왔습니다.
Reference
이 문제에 관하여(picoCTF 2019 OverFlow 1 - Points: 150), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/samohan/items/ed6985c45bb9f909fbd2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)