ipwn

[Pwnable.tw] calc 본문

Write up/Pwnable.tw

[Pwnable.tw] calc

ipwn 2018. 11. 2. 13:49

보호기법



canary, nx걸려있음, 32bit static 컴파일 된 binary



분석


사실상 pwnable.tw풀면서 분석하기 제일 어렵지 않았나 하는 생각이 듦.


vuln : 간단하게 말하자면 수인지, 연산자인지 검증하는 부분에서 첫 문자가 연산자인 경우는 체크하지 않음.


vector : 

 

이를 통해서 수들을 관리할 때 index 번호를 조작할 수 있음. -> Out Of Bound.


그 뒤에는 static 컴파일 된 binary이니, 널려있는 가젯들을 통해서 shellcode처럼 가젯잘 써주고 배치해주면 됨.


shell.


void __cdecl eval(number *num, char oper)
{
  if ( oper == '+' )
  {
    num->num[num->index - 2+= num->num[num->index - 1];
  }
  else if ( oper > '+' )
  {
    if ( oper == '-' )
    {
      num->num[num->index - 2-= num->num[num->index - 1];
    }
    else if ( oper == '/' )
    {
      num->num[num->index - 2/= num->num[num->index - 1];
    }
  }
  else if ( oper == '*' )
  {
    num->num[num->index - 2*= num->num[num->index - 1];
  }
  result = num;
  --num->index;
}



입력받을 때 맨 앞 부분이 연산자인 걸 구분하지 않는 것과, 위 코드 두 부분이 취약한 부분이다.



'Write up > Pwnable.tw' 카테고리의 다른 글

[pwnable.tw] kidding 후기  (0) 2019.05.03
[Pwnablw.tw] dubblesort  (0) 2018.11.02
[Pwnable.tw] orw  (0) 2018.11.02
[pwnable.tw] start  (0) 2018.11.02
Comments