목록2025/02/15 (2)
오래 못 할 짓 하지 않기

이번 문제는 흐름이 보인다. (맨날 이래놓고 다 틀림)center_name는 24 bytes 인데, 읽는 건 100 bytes임. 그럼? 우리가 조작하기 위해서 넘어야 하는 것은center_name(24) + dummy(4) + cmd_ip(72)이다. 24번 줄을 보면 cmd_ip의 시작~8번째까지 "ifconfig"면 system()이 실행되는 것 같다. 근데 막상 까보니 크기가 약간 좀 다른 것 같다.뭐 return address까지 가는 건 아닌 것 같고다른 문자열을 덮기만 하면 되니까 이걸로 계산해보자. 우린 buf에 입력한다.그리고 s1에 있는 값이 "ifconfig" 인지 비교한다. 100만 읽는데 return address로 가는 건 너무 멀어서 안 될 것 같다.system()을 노리..

실습 문제라 이전에 풀던 것에 비해 간단해보인다. buf의 크기는 128 반면에 29번 줄에서 받는 크기는 141return address를 더럽히기에 충분하다. 근데 return을 어디로 보내지...> 쉘코드를 만들면 된다. shell_code = b'\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80' # 26 바이트 쉘코드까지 만들 정도의 지식은 안 되어서 GPT한테 외주맡겼다. 방법이 신기하더라 이렇게 있다고 생각해보자.buf에 shell을 실행시키는 코드를 넣고return address에 shell을 실행시키는 코드가 있는 buf의 주소를 보내는 것이다. 그..