pwnable.kr 3번 문제임
문제를 보면 BOF 문제임을 알수 있음
접속해서 실행시켜 보면 다음과 같음
제공된 코드 까보아씀 !
간단한 코드임 main에서 func 로 0xdeadbeef 를 인자로 넘겨주고
func에서는 key값과 0xcafebabe를 비교함
문제는 0xdeadbeef를 key 로 넘겨 주었는데 어떻게 0xcafebabe랑 같게 만드느냐임 ...
bof 문제니까 스택보려고 일단 gdb ㄱㄱ 싱
분명 메모리 상에 넘겨주는 0xdeadbeef 가 이쓸꺼임 gets 함수 호출하고 cmp 하기 전에 일단 브포 걸고 실행시킴
그 후 인자로 a값을 배열의 크기만큼 32개 넘겨 주어 봤음
보면 0x61616161 이 정확히 32바이트 만큼 들어간걸 확인할 수 있고 20바이트 뒤에 0xdeadbeef가 있는걸 확인 할 수 있음
저 deadbeef 값(key)을 cafebabe로 수정하면 될 것 같다고 생각함
그렇게 하기 위해선 52바이트 뒤에 (배열 32바이트 + 20바이트) cafebabe가 들어가야 함
그래서 첨에 `python -c 'print "a"*52 + \xbe\xba\xfe\xca"'` | nc pwnable.kr 9000 하면 될거 같았는데 안댐 ...
찾아보니까
(python -c 'print "A"*20 + "\x64\xff\xff\xbf";cat) | ./test 명령을 알아볼 필요가 있습니다.
그냥 (python -c 'print "A"*20 + "\x64\xff\xff\xbf") | ./test명령을 하면 프로그램이 바로 종료 되기 때문에 cat명령어와 같이 표준 입력을 받아서 표준 출력을 해주는 명령어
를 같이 사용하므로써 cat 명령어가 파이프로 실행파일과 연결되어 있어 프로그램이 종료되지 않고 입력을 대기 하게 되기 때문에 my-pass 명령어를 사용할수 있게 됩니다.
라구 함 ... 이건 이해 잘 안갔음 더 자세히알아봐야 할듯 ..
쨋든 그래서 위에 형식을 맞추어서 작성해주니
플래그값을 딸 수 있었음
'개인공부 > pwnable' 카테고리의 다른 글
[protostar] stack2 문제풀이 (0) | 2018.10.14 |
---|---|
[protostar] stack1 문제풀이 (0) | 2018.09.16 |
[protostar] stack0 문제풀이 (0) | 2018.09.16 |
[pwnable]pwnable.kr 2번 (0) | 2018.09.09 |
[pwnable]pwnable.kr 1번 (0) | 2018.08.24 |