ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • sub write up
    System hacking training/pwnable.xyz 2019. 12. 31. 13:31

    sub
    prob
    file, checksec

    Welcome보다 쉽게 풀었다.

    거두절미하고 디컴파일해보면 답이 나온다.

     

    IDA-View main()

    main()함수를 디컴파일 해본 결과인데,

    v5와 v6에 사용자에 대해 입력을 받고, 두 수가 4918보다 작거나 같으면서 두 수의 차가 4919일 때 flag를 출력해준다.

     

    따라서 위 두 조건을 만족시키며 flag를 출력할 수 있는데,

    v5에는 0, v6에는 -4919를 입력하면 뚝-딱 풀린다.

    ⚡ root@ubuntu  /mnt/hgfs/vm_shared/pwnable.xyz  nc svc.pwnable.xyz 30001
    1337 input: 0 -4919
    FLAG{--------------------}

    의문이 들었던 부분은 scanf()함수를 호출할 때 format string으로 %u(unsigned int)를 지정했는데, 음수 입력이 가능할까..? 하는 부분이다.

     

    C99표준에 따르면 scanf()함수의 %u format string은 "-" 기호가 입력되었을 때 에러를 뿜지 않고, 2의 보수를 취한뒤 저장한다고 한다.

    따라서 입력이 가능했고, 0 - (-4919)로 if문 조건을 만족할 수 있었던 것이다.

     

    (Ref : https://stackoverflow.com/questions/38684386/scanf-u-negative-number)

    (Ref : https://en.wikipedia.org/wiki/Scanf_format_string)

    반응형

    '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
    add write up  (0) 2020.01.01
    Welcome write up  (0) 2019.12.22
Designed by Tistory.