시스템 해킹/pwnable

[DreamHack] oob1

Lhaaan 2023. 5. 21. 13:18

idx의 범위 제한 로직이 없기 때문에 해당 idx에 큰값을 주어서 name쪽으로 넘어가면 될것이라 생각

 

  • 일단 처음에 가장 중요한 name, command의 시작주소를 알아보자
  • name 시작주소: 0x804a0ac
  • command 시작주소: 0x804a060
  • scanf에서 eax를 입력받는걸 알 수 있음
    • eax*4 + 0x804a060 → 즉 eax는 idx값이고, 현재 32비트이기 때문에 4바이트씩 증가 되면서 인덱스를 맞추는 것으로 볼 수 있음
  • 그러면 name의 주소에서 command의 주소를 빼면 거리차이가 있을 거고 4바이트로 나누게 되면 idx를 추측할 수 있음
  • 거리차이: 0x4C → 10진수: 76
    • 76/4 = 19
  • 즉 command의 19번째가 name의 시작임

  • 익스플로잇 짜는 과정에서 name의 시작주소를 가리키게 하면 될거라 생각했는데, 들어가는 argument를 보니까 “/bin”만 들어감
    • 정확한 이유에 대해서 아직 찾지 못함
  • 그래서 system 함수 인자에 name의 다음주소 + “/bin/sh”를 주어서 system 함수 호출 시 name+4주소를 가르키게 해서 /bin/sh가 실행되게함
    • 왜 name주소를 가리키게 했을때 안되는지는 의문.
  • 익스 코드는 비교적 간단함

'시스템 해킹 > pwnable' 카테고리의 다른 글

[pwnable.kr] passcode  (0) 2024.05.09
[pwnable.kr] dragon  (0) 2023.07.07
[pwnable.kr] Collision  (0) 2023.05.21
[pwnable.kr] fd  (0) 2023.05.21
[DreamHack] SSP01  (0) 2023.05.13