-
add write upSystem hacking training/pwnable.xyz 2020. 1. 1. 13:30
멍청하게 got overwrite하려고 삽질(?)해서 시간 좀 날린 문제다.
NX, Canary가 걸려있어 일반적인 쉘코드를 이용한 공격에 대한 대비가 되어있고,
Partial RELRO가 걸려있어 got에 대한 쓰기 권한이 있어 overwrite가 가능하다.
해당 바이너리는 문제 이름 그대로 add를 해주는 기능만 구현이 되어있다.
또한 flag를 출력해주는 win()함수가 구현되어있다.
취약점은 main()함수에서 입력받은 두 수를 더하고, 해당 값을 저장하는 과정에서 발생하는데,
v6을 통해 v7에서 ret에 도달할 수 있고, v4와 v5를 더한 값으로 해당 위치에 원하는 값을 저장할 수 있다.
v7은 bp-0x60(Dec : 96)에 위치하며 ret에 도달하기 위해서는 v6을 13으로 세팅하면 된다.
v7은 __int64 즉, 8byte씩 저장공간을 마련하기 때문에 bp+8인 ret에 도달하기 위해서는 v6에 13을 입력하면 된다.
v7[0] : rbp-0x60
v7[1] : rbp-0x58
v7[2] : rbp-0x50
.
.
.
v7[12] : rbp+0x0
v7[13] : rbp+0x8 => ret!⚡ root@ubuntu /mnt/hgfs/vm_shared/pwnable.xyz nc svc.pwnable.xyz 30002 Input: 0 4196386 13 Result: 4196386Input: a FLAG{------------------}
입력 포맷이 %ld(부호있는 10진수 정수)로 받기 때문에 10진수로 변환하여 입력하면 flag를 획득할 수 있다.
반응형'System hacking training > pwnable.xyz' 카테고리의 다른 글
note write up (1) 2020.01.10 GrownUp write up (0) 2020.01.02 misalignment write up (0) 2020.01.01 sub write up (0) 2019.12.31 Welcome write up (0) 2019.12.22