본문 바로가기

Reversing21

[Toddler's Bottle] - flag [Toddler's Bottle] 이번 문제는 리버싱 문제인거 같다 위 주소로 파일을 다운 받아 보자. gdb로 main함수를 볼려고하니 심볼이 없어서 로드되지 않는다. 그래서 file 명령어로 파일을 확인해보니 정적 링크가 되어 있고 stripped(안티 디버깅)가 되있다. checksec으로 확인해본 결과 Packer 부분에 UPX 패킹이 되어있다. https://upx.github.io/ UPX: the Ultimate Packer for eXecutables - Homepage Welcome UPX is a free, portable, extendable, high-performance executable packer for several executable formats. Please also .. 2021. 3. 27.
Keygen 1. 풀이 nc로 연결하면 키 입력이라고 뜨고 입력하면 아무 반응이 없다. 메인 함수 부분을 보면 check_key 함수가 있는데 여기서 키를 검사하는거 같고 키가 일치하면 flag를 출력해준다. check_key 함수를 확인해 보자. check_key 함수를 보면 encoding 함수가 보이고 strcmp에서 "OO]oUU2U 2021. 3. 21.
Strncmp 1. 풀이 프로그램을 실행시켜 보면 input을 요구하고 입력을 하니까 Always dig deeper를 출력해주고 종료한다. 프로그램을 IDA로 main함수 영역을 살펴보면 입력을 받는 부분이 있고 Good game과 Always dig deeper 문자열이 보인다. 입력을 받고 입력을 받은 v4와 위의 숫자들 즉 v5값을 사용자 정의 함수인 strcmp_ 함수의 인자로 넘겨준다. strcmp_를 살펴보자 strcmp_ 함수를 살펴보면 첫 번째 for문 부분은 왜 돌리는지 아직도 잘 모르겠다. 두 번째 for문 부분에서 입력 값과 key 값을 xor연산을 하여 그 값이 a2 값과 일치하면 Good game을 출력한다. key는 check 함수가 있는데 그 쪽 부분에서 한번 살펴 보자. v3에 a2를 넣.. 2021. 3. 19.
Handray 1. 풀이 파일을 실행시켜보니 flag를 뛰어넘었다고 출력한다. 분석 도구를 이용해 분석 해보자. IDA를 통해 파일을 열어 확인해보니 flag is %s\n 부분이 플래그를 출력해주는 부분인거 같고 flag 문자열은 앞서 확인한 문자열을 출력해주는 부분인거 같으니 하나하나 분석해 보자. 1번 부분에서 [rbp+var_4]가 0과 같지 않으면 0x40058D 부분으로 점프한후 문자열을 출력하고 종료한다. 만약 조건을 충족 했다면 [rbp+var_8]을 0으로 초기화시키고 2번으로 이동하여 30보다 작거나 같은지 비교하고 아니라면 4번으로 가서 flag값을 출력해주고 조건이 맞다면 3번으로 이동한다. 3번 부분은 string[rax]와 array[rax*4]를 더하여 문자를 저장하고 마지막에 [rbp+va.. 2021. 3. 18.