Wargame/H4C
System Hacking - Notepad
wyv3rn
2023. 7. 1. 16:41
728x90
반응형
1. intro
2. code 및 분석
2.1. code
int __cdecl main(int argc, const char **argv, const char **envp)
{
int v4; // [rsp+4h] [rbp-Ch] BYREF
size_t size; // [rsp+8h] [rbp-8h] BYREF
init(argc, argv, envp);
v4 = 0;
size = 0LL;
while ( 1 )
{
menu();
_isoc99_scanf("%d", &v4);
switch ( v4 )
{
case 1:
writememo();
break;
case 2:
editmemo();
break;
case 3:
readmemo();
break;
case 4:
removememo();
break;
case 5:
showlist();
break;
case 6:
if ( !toggle )
{
printf("size: ");
_isoc99_scanf("%llu", &size);
comment = malloc(size);
puts("Send your comment!!");
read(0, comment, size);
toggle = 1;
}
break;
default:
continue;
}
}
}
2.2. 분석
메모를 쓰고 읽고 지우고 리스트를 볼 수 있고, 더불어 원하는 size만큼 comment를 쓸 수 있다.
이 모든 것을 heap을 통해 관리한다.
3. 취약점 확인 및 공격 준비
3.1. 취약점
unsorted bin leak + heap overflow
3.2. 공격 준비
문제를 딱 보자마자 heap 문제이다.
heap overflow를 통해 fake chunk를 생성하며 다음에 값을 쓸 위치를 조작할 수 있기에
이를 통해 hook overwrite를 하면 된다.
6번 메뉴는 왜 필요하지...?
728x90
반응형