-
add write upSystem hacking training/pwnable.xyz 2020. 1. 1. 13:30
add 멍청하게 got overwrite하려고 삽질(?)해서 시간 좀 날린 문제다.
prob file, checksec NX, Canary가 걸려있어 일반적인 쉘코드를 이용한 공격에 대한 대비가 되어있고,
Partial RELRO가 걸려있어 got에 대한 쓰기 권한이 있어 overwrite가 가능하다.
IDA-View main() 해당 바이너리는 문제 이름 그대로 add를 해주는 기능만 구현이 되어있다.
또한 flag를 출력해주는 win()함수가 구현되어있다.
IDA-View 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