ipwn
[tamuCTF] pwn1 본문
이번에 푼 문제는 pwn1 문제이다.
정말 쉽다.
nt __cdecl main(int argc, const char **argv, const char **envp) { char s; // [esp+5h] [ebp-23h] int v5; // [esp+1Ch] [ebp-Ch] setvbuf(_bss_start, (char *)2, 0, 0); puts("This is a super secret program"); puts("Noone is allowed through except for those who know the secret!"); puts("What is my secret?"); v5 = 0; gets(&s); if ( v5 == 0xF007BA11 ) print_flag(); else puts("That is not the secret word!"); return 0; } |
이건 코드인데, gets로 s버퍼를 overflow시켜서 v5의 값을 0xF007BA11로 덮어주면 된다.
그럼 파일입출력을 통해서 flag를 읽어와준다.
지금 보니 덮어야 하는 값이 football이었네 암튼 s의 공간은 ebp-0x23부터 시작이고, v5는 ebp-0xc부터 시작이므로
두 변수 간의 거리 즉 23byte를 덮어주고 그 뒤를 0xF007BA11로 덮어주면 flag를 읽어올 것이다.
사실 처음에는 그냥 0xF007BA11로 적당히 많이 덮으려했는데, buffer간의 거리가 4의 배수가 아니라서 안됐다...
암튼 dummy값으로 덮어주고 0xF007BA11로 덮어주니 이렇게 플래그가 나왔다.
이제 라업 마저쓰고 shell 따봐야지 ㅋㅅㅋ(따지려나?)
gigem{H0W_H4RD_1S_TH4T?}
'CTF's > tamuCTF' 카테고리의 다른 글
[tamuCTF] you can run, you can hide (0) | 2018.02.26 |
---|---|
[tamuCTF] Bender (0) | 2018.02.26 |
[tamuCTF] Veggies (0) | 2018.02.26 |
[tamuCTF] pwn3 (0) | 2018.02.26 |
[tamuCTF] pwn2 (0) | 2018.02.26 |
Comments