[HackCTF] :pwn: gift
두비니
·2021. 3. 24. 02:28
뭐야; 너무좋아
binsh, system모두 주니 바로 이용합시다. 거기다가 printf는 바로 프린트시켜서 fsb도 발생하네요.
그래서 바로 진행해보도록 하겠습니다.
확인해보니깐 binsh에는 아무것도 없네요. 저기에다 입력하면 되겠죠?
시나리오는 다음과 같습니다.
1. binsh에 "/bin/sh"저장 (fsb취약점 이용)
2. system(&binsh) 실행 (ret overwrite 이용)
그럼 바로 해봅시다.
일단 /bin/sh\x00자체를 한번에 16진수로 바꾸어 넣기에는 32비트 환경에서 너무 큽니다. 따라서 잘라서 넣어줘야하는데
str | / | b | i | n | / | s | h | \x00 |
hex | 0x2f | 0x62 | 0x69 | 0x6e | 0x2f | 0x73 | 0x68 | 00 |
각 hex/str값은 이렇게 되어있으니
/b = 0x622f
in = 0x6e69 >> 0x6e69 - 0x622f = 0x0C3A
/s = 0x732f >> 0x732f - 0x6e69 = 0x04C6
h\x00 = 0x68 >> 0x10068 - 0x732f = 0x8D39
으로 계산해서 2바이트씩 넣어주면 될 것 같다. 기존의 hex값에서 추가적으로 계산한 이유는 이미 출력된 바이트수만큼 입력되기 때문입니다.
일단 이걸 가지고 익스를 짜봅시다.
잘 이해 안되는 분은 여기 글
개인적으로 맨 마지막에 gets가 아니라 fgets로 입력을 제한받았으면 fsb취약점을 더 잘 사용할 수 있지 않았을까 싶네요. 아무튼 굳굳!
'War Games > HackCTF' 카테고리의 다른 글
[HackCTF] :pwn: pwning (0) | 2021.03.27 |
---|---|
[HackCTF] :rev: static (0) | 2021.03.25 |
[HackCTF] :pwn: Look at me (0) | 2021.03.23 |
[HackCTF] :pwn: Beginner_Heap (0) | 2021.03.22 |
[HackCTF] :pwn: RTL_Core (0) | 2021.03.21 |