write-up(pwn)

    [G04T] Simple FSB 3

    [G04T] Simple FSB 3

    문제의 c 소스 코드입니다. corruptMe에 0xdead를 저장하면 셸을 획득할 수 있습니다. 이전 FSB2 문제와 동일한 구조입니다. 0xdead를 10진수로 바꾸면 57005입니다. 익스플로잇 코드를 작성합니다. %57005c% 8$n----- 0x60104a 57005이 8번째 포맷 스트링 인자에 적힌 corruptMe 주소에 들어가면서 셸을 획득할 수 있게 됩니다. 플래그를 획득했습니다! 참고 https://ssongkit.tistory.com/146

    [G04T] Simple FSB 1

    [G04T] Simple FSB 1

    문제의 c 소스 코드입니다. flag를 출력하면 되는 문제입니다. 메인 함수를 디스어셈블 한 결과 flag는 0x601060에 있음을 알게 되었습니다. c 소스 코드 중 아래 두 문장이 FSB 취약점을 유발합니다. scanf("%lu",&n); printf(n); printf() 함수의 동작을 이해하면 풀 수 있는 문제입니다. 예를 들어 printf("%d %d %d",1,2,3); 라는 구문이 있다면 첫 번째 인자는 형식표현자이고 두 번째 인자부터 첫 번째 인자에 적힌 표현식들로 순서대로 전달됩니다. printf() 함수가 실행될 때 "%d %d %d" 문자열을 찾아서 저장되어 있는 주소(문자열의 시작 주소)로 값이 바뀝니다. 예를 들어 "%d %d %d"가 0x506050에 저장되어 있다면 print..

    [G04T] Simple FSB 2

    [G04T] Simple FSB 2

    문제의 c 소스 코드입니다. corruptMe에 0xff를 저장하면 win() 함수가 실행되서 셸을 획득할 수 있습니다. vuln() 함수를 디어셈블 해보면 corrupMe 변수의 주소가 0x404049임을 알 수 있습니다. ff는 10진수로 255이고 이는 %255c로 나타낼 수 있습니다. 드림핵의 강좌를 보면 printf() 함수의 포맷 스트링 인자의 순서가 나와 있습니다. %p를 통해 입력 값이 몇 번째 인자에서부터 들어가는 지를 확인해보면 6번째부터 들어가는 것을 확인할 수 있습니다. 페이로드를 8바이트 단위로 나눠서 작성하면 아래와 같이 됩니다. %255c%8$ nAAAAAAA 0x404049 여기서 주소는 리틀엔디안을 적용시켜줘야 합니다. 위 내용을 바탕으로 익스플로잇 코드를 작성해 줍니다. ..

    [G04T] Simple BOF 2

    [G04T] Simple BOF 2

    문제의 c 소스 코드입니다. strcpy() 함수는 길이를 정해주지 않아서 BOF 취약점이 있습니다. input으로 넣을 수 있는 길이가 buf의 크기보다 크므로 BOF 공격이 가능합니다. win() 함수의 주소를 ret로 바꿔주면 됩니다. checksec으로 보호 기법을 확인해줍니다. vuln() 함수를 디어셈블 해주면 buf의 주소로부터 rbp까지의 거리가 0x20임을 알 수 있습니다. 이전 문제인 bof1처럼 문제를 풀어주면 똑같이 EOF가 터집니다. (stack alignment가 깨져서 그렇습니다) win() 함수를 디스어셈블해서 보면 0x401231에 "/bin/sh"가 인자로 들어갑니다. 따라서 ret 주소를 0x401231으로 바꿔주면 win() 함수를 실행시켜 쉘을 획득할 수 있습니다. ..

    [G04T] Simple BOF 1

    [G04T] Simple BOF 1

    문제의 c 코드입니다. win() 함수에 셸 코드가 들어있습니다. checksec으로 보호 기법을 확인할 수 있습니다. 메인 함수를 디어셈블하면 버퍼의 주소로부터 $rbp사이의 거리가 0x70임을 알 수 있습니다. gdb를 통해 win 함수의 주소를 확인할 수 있습니다. (여러 번 시도해도 같은 걸 보니 ASLR이 적용되지 않은 듯 합니다) 위 정보를 바탕으로 페이로드를 작성해줍니다. 실행하면 EOF가 터집니다. EOF가 발생하는 이유는 stack alignment가 깨져서 그렇다고 합니다 (아래 링크 참조) https://hackyboiz.github.io/2020/12/06/fabu1ous/x64-stack-alignment/ hackyboiz hack & life hackyboiz.github.io..