ipwn
[Pwnable.tw] calc 본문
보호기법
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