본문 바로가기

got overwrite9

[Toddler's Bottle] - passcode 문제 설명에서 암호기반의 로그인 시스템을 만들었는데 컴파일은 에러없이 됬지만 컴파일러의 경고가 있었다고한다. 어떤 에러인지 한번 확인해보자. main 함수에서 welcome()함수와 login()함수를 호출하고 리턴한다. welcome함수에서는 name[100] 만큼 선언해주고 입력을 받는다. 이제 login 함수를 보면 passcode1, passcode2를 검증하는데 검증이 성공하면 flag를 보여준다. 일단 문제를 실행시켜 보자. 실행시켜보면 passcode1을 입력하면 Segmentation fault가 출력되고 종료한다. 다시 위의 소스 코드의 longin 함수를 잘보면 scanf() 부분에서 &지정자가 빠져있다. 예를 들어 passcode1=0xbffff123 이면 0xbffff123의 주소에.. 2021. 3. 28.
You are silver 1. Mitigation 보호기법은 GOT Overwrite가 가능하고 실행 권한이 없다. 2. 문제 확인 문제를 실행시키면 입력을 받는데 입력을 받은 값을 출력해주고 You are silver 문자를 출력해준다. 3. 풀이 main 함수 영역을 보면 fgets로 입력을 받고 printf로 출력해주는데 formatstring bug가 일어난다. FSB 문제인거 같다. 계속해서 get_tier함수를 한번 보자. get_tier 함수는 v6의 값에 따라 티어가 정해지는거 같고 result를 출력해준다. IDA로 통해 함수 부분을 살펴보면 paly_game라는 함수가 있는데 이 함수도 살펴 보자. play_game 함수를 보면 get_tier에서 리턴해준 result 값이 4일때 flag를 보여준다. 그러면 .. 2021. 3. 26.
validator 보호되어 있는 글 입니다. 2021. 3. 21.
RTL_Core 1. Mitigation 보호기법은 GOT Overwrite가 가능하고 실행 권한이 없다. 2. 문제 확인 프로그램을 실행시켜보면 Passcode를 입력하라고 나오며 패스코드를 입력하니 실패! 를 출력해준다... 3. 풀이 main 함수를 살펴보면 Passcocde를 입력하는 부분과 check_passcode 함수와 hashcode가 보인다. check_passcode와 hashcode 영역을 살펴보자. 해쉬 코드 부분을 보면 0C0D9B0A7 값이 들어가있다. check_passcode 함수는 입력받을 값을 5번에 걸쳐서 더한 값을 리턴해준다 그렇다면 5번의 걸쳐 더한 값이 hashcode와 같으면 core 함수를 불러올 수 있다. 그렇다면 해쉬 값을 5번 나눠주면 된다. 0xC0D9B0A7 값을 5로.. 2021. 3. 19.