목록2021/03/20 (2)
Sechack

바이너리가 굉장히 심플합니다. nasm으로 구현된것 같네요. vuln함수를 보면 rsp에 입력을 받으니까 ret를 조작할 수 있습니다. 위에 보니까 가젯들도 전부 제공해주고 있습니다. 한가지 문제점은 bss섹션이 존재하지 않고 .text섹션밖에 없어서 /bin/sh문자열을 저장할곳이 없습니다. 결국 스택을 이용해야 합니다. execve system call은 /bin/sh문자열 자체가 아닌 /bin/sh문자열이 저장된 메모리 주소를 필요로 합니다. sysrop를 진행할 가젯은 위에서 보시다시피 충분히 존재합니다. 스택에 /bin/sh문자열을 넣고 인자로 전달하려면 stack leak이 필요합니다. 하지만 leak할 방법이 없는것 같습니다. vuln함수에 입력받는 부분을 보면 mov rsi, rsp 즉 r..

main에서 myFun함수를 호출한다. 저 함수가 핵심기능이다. 하지만 디컴파일 해보려고 하면 에러가 뜨면서 디컴파일이 되지 않는다. 어쩔 수 없이 어셈블리어 수준에서 분석해야 한다. 옆에 보이는 win함수가 어셈 분석결과 fopen, fgets, printf를 이용해서 플래그를 출력해주는 함수였다. 저것도 마찬가지로 디컴파일이 되지 않는다. win함수이다. 주석부분만 봐도 flag.txt를 읽어서 출력해주는 함수임을 알 수 있다. myFun함수이다. name과 password를 입력받는다. ebp-0x20에 입력받는데 입력하는 크기는 0x150이어서 BOF가 터지는것을 알 수 있다. 그리고 ebp-0xc의 값을 0x0DEADBEEF와 체크해서 각각 분기한다. 하지만 자세히 보면 출력하는 문자열만 다를뿐..