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

+ Recent posts