문제의 이름이 rop인 만큼 rop를 사용해서 풀 수 있다.먼저 익스플로잇에 사용될 가젯들을 찾아보자. Rdi 값을 설정하기 위한 가젯.Rsi 값을 설정하기 위한 가젯.스택 정렬을 위한 가젯.이제 코드를 작성해보자. 전체 코드는 다음과 같다.필요한 부분만 설명하도록 하
다운 받은 폴더 안에는 도커 파일과 테스트 플래그 그리고 문제 바이너리 파일이 주어져 있다.바이너리 파일을 IDA로 분석해보자. main 함수는 run 함수를 호출한다.run 함수의 구조는 다음과 같다.코드를 보면 대략적으로 read write clear 라는 메뉴가
흔한 버퍼 오버 플로우 문제인 것 같지만, 카나리를 프로그램에서 따로 생성하여 사용한다는 것을 알 수 있다. 문제의 설명이 rand() canary!! 인데, time을 주는 것으로 봐서는 이를 사용하면 카나리를 계산할 수 있으리라고 추측해볼 수 있다.그리고 바이너리를
prob에서는 cipher 파일에 있는 STREAM 클래스를 가져와 암호화를 수행하고 hex 값으로 플래그를 출력해주는 것을 확인할 수 있다. 그리고 cipher를 살펴보면 클래스 내부에서 암호화 함수뿐만 아니라, 복호화 함수도 제공하는 것을 알 수 있다.여기서 유심히
파셜 relro에 pie가 없다. 분석만 잘하면 쉽게 풀 수 있을 것 같다.첫 번째 scanf에서 %d 포맷으로 char 형 포인터 배열에 입력을 받는다.이러면 s의 주소를 우리가 원하는 형식으로 조작할 수 있다.단 C에서 정수형은 4바이트이기 때문에 이 크기만큼만 조
asdasd