SMALL

hackctf writeup 3

[HackCTF] BOF_PIE

[문제] [풀이] 문제 파일을 실행해보니 j0n9hyun 의 주소를 알려주고 종료가 되고 있다. 또한, 일정 값 이상 입력 시 버퍼 오버플로우가 발생하고 있다. 그런데, 주소 값이 계속해서 바뀌고 있으며 주소의 뒷자리 0x909는 고정되고 있었다. 이에 ida로 분석해보니 j0n9hyun 함수는 0x890이었지만, welcome 함수가 0x909인 것으로 보아 프로그램 실행 시 제공되는 주소는 welcome 함수의 주소인 것을 알 수 있다. checksec으로 보호기법을 확인해보니 문제 이름 처럼 PIE 보호 기법으로 인해 주소 값이 랜덤으로 바뀌는 것을 알 수 있다.(ASLR과 유사) gdb를 통해 함수를 확인해보니 j0n9hyun, welcome, main함수에 집중하여 보면 될 것 같다. main ..

Wargame/HackCTF 2021.07.26

[HackCTF] Offset

[문제] [풀이] 문제의 바이너리를 실행하니 일정 개수의 문자열을 입력한 후에는 버퍼 오버플로우가 발생하는 것을 확인할 수 있었다. 보호 기법을 확인하니 ret 주소를 이용한 exploit이나 shellcode를 삽입할 수 없었다. 이에 gdb를 실행하여 함수 목록을 확인해보았다. 함수 목록을 확인하니 two, print_flag, one, select_func, main 함수가 눈에 띄였다. print_flag에서 flag를 획득할 수 있을 것 같고, main을 제외한 다른 함수들이 특이하여 살펴보았다. 먼저 main함수를 보니 main(){ setvbuf(); puts("Which function would you like to call?"); gets(&s); select_func(&s); retu..

Wargame/HackCTF 2021.07.25

[HackCTF] Simple_Overflow_ver_2

[문제] [풀이] 바이너리를 실행해보면 입력 값에 대해 버퍼에 저장하여 주소와 함께 출력해주는 것을 확인할 수 있다. 주소는 실행할 때마다 바뀌고 있어 버퍼에 대한 값은 pwntool로 받아서 사용해야 할 것 같다. 보호 기법을 확인하니 NX 가 disabled 되어 있어 쉘코드를 작성할 수 있음을 확인할 수 있다. main 함수를 확인하니 꽤나 긴 흐름을 확인할 수 있었는데, 주요 함수들을 위주로 정리해보면 다음과 같다. main+61: Data : 출력 main+66: ebp-0x88 주소를 가져옴. main+76: %s로 문자열을 입력 받을 것을 의미함. main+83: scanf 함수 호출 -> 사용자의 입력 받음 main+88~232: 주소 값과 함께 사용자가 입력한 문자열을 1바이트 단위로 보..

Wargame/HackCTF 2021.07.25
LIST