-
Stack1 풀이System hacking training/Protostar 2018. 2. 3. 21:00
[문제]
[풀이]
역시 stack0와 같이 modified 의 값을 변경해야 하는 문제인데 다른점은 if 문 참 조건이 modified 의 값이 0x61626364 이다.
또 다른점은 이 문제의 취약점은 strcpy()에 의해 bof가 발생한다는 점이다.
strcpy()는 문자열의 길이를 검사하지 않는다.
정확한 계산을 위해 gdb로 열어본다.
소스 코드가 주어졌기 때문에 분석은 어렵지가 않다.
역시 esp+0x5c 가 modified esp+0x1c 가 buffer 시작 위치다.
[Stack]
[low address] | char buffer[64] | int modified | SFP | RET | [high address]
이전 문제와 동일하다.
따라서 페이로드를 (python -c 'print "A"*64+"\x64\x63\x62\x61"';cat) | ./stack1 이렇게 작성하면 될줄 알았는데 이상하게 오류가난다..
오류 내용은 추후 찾아봐야겠다.
modified의 값이 0x61626364만 되면 문제는 풀린다.
따라서
이런식으로 풀었다.
A를 64개 출력해서 복사해서 stack1의 인자값에 붙여넣는다.
따라서 이 0x61626364(아스키 값 adc)를 리틀엔디언 방식으로 넣어줬다.
반응형