HackCTF
[Hack CTF - look at me]
Execute 문제파일을 실행시키면 hellooooooooooo를 출력해주고 입력을 받는다. Dummy를 일정크기 이상 넣어주면 segmentaion fault가뜨는 것을 확인 할 수 있다. Analyze NX bit가 걸려있고 나머지는 다 풀려있는 것을 확인 할 수 있다. Main getegid함수를 통해 v5변수에 effective group id를 넣어준다. 그리고 setresgid함수를 통해 v5를 인자로 주어 현재 프로세스의 real user id effective user id, saved set-user-id를 설정해준다. 그리고 look at me 함수를 호출한다. Look at me Get 함수가 보이는 것으로 보아 여기서 buffer overflow를 트리거 할 수 있을 것 같다. v1..
[Hack CTF – Simple_Overflow_ver_2]
Execute 문제로 주어진 파일을 실행하면 입력을 받고 입력받은 값이 저장된 위치를 출력해주는 것으로 보인다. 파일 재실행시 address로 추정되는 값들이 바뀌는 것으로 보아 해당 값을 leak해준뒤 이를 기반으로 exploit을 작성해야 할것같다. Analyze 보호기법을 확인해보면 아무것도 안 걸려있는 것을 확인 할 수 있다. Main Line 13 : scanf함수를 통해 s변수를 입력 받는다. 이때 \n을 파라미터로 주어 \n도 입력 받는다. Line 15~26 : for문으로 앞서 execute에서 확인했던 것처럼 s[i]의 address를 leak해주고 s배열 속에 든 값을 출력해준다. Line 29 : do while문의 탈출 조건으로 scanf의 return값이 0이 아니고 v5가 ‘y..
[HackCTF - offset]
Excute 먼저 문제로 주어진 파일을 실행시키면 어떤 함수를 호출할지 물어보고 값을 입력해주면 종료된다. 아마 취약점을 찾아 shell을 띄우거나 플래그를 출력할 수 있는 함수를 호출 해주면 될 것 같다. 적용되어있는 보호기법은 아래와 같다. Analyze IDA에 올려서 프로그램의 실행 흐름을 분석해보자 Main Line 9 : gets함수를 통해 길이를 제한하지 않고 입력을 받는다. Line 10 : select_func 함수에 앞서 입력받은 값을 인자로 전달해 준다. Select_func Line 3,4 : char형 변수 dest와 함수 포인터 v3를 선언해준다. Line 6 : v3포인터 변수에 함수 two의 주소를 대입한다. Line 7 : strncpy함수를 호출에 인자로 받은 src를 0..