완료됨
도저히 감이 안 잡힙니다.
malloc(2 * (__int16)*v5); // trash?
if ( v2 ) // not initialized
s = v2;
else
s = *(char **)(v6 + 40);
v1 = malloc(4uLL);
if ( !v1 )
{
fwrite("Error: malloc()\n", 1uLL, 0x10uLL, stderr);
exit(1);
}
*v1 = **(_DWORD **)(v6 + 40);
sub_401AE8(s, v1, v3, (unsigned __int16)v4); // decode
puts(s);
exit(0);
decode후 호출하는 함수 내부를 보면 이렇게 initialized가 안 되어있는 변수가 존재합니다.
만약에 v2 = puts_got이고
decode되는 내용이 one_gadget주소라면 shell이 호출될 것입니다.
one_gadget은 프로그램 내에 cat flag호출하는 함수 있는데 그것으로 보면됩니다.
이런식으로 방향을 잡았으나 v2를 수정할 방법을 도저히 찾지 못했습니다.
도와주세요 :)
#pwnable
작성자 정보