목록2020/06 (23)
Self-Improvement
FILE ELF 32bit, dynamically linked, stripped 적용된 보호기법 Functions IDA Main 8888포트로 소켓 통신이 이루어진다. 그리고 그림엔 없지만 fork()로 인해 canary는 고정이 되어진다. sub_8048FC6 취약점이 존재하는 함수를 바로 확인해본다. buf 변수는 ebp-0x16이며 canary(ebp-0xC)를 빼면 10바이트크기를 가지고있다. 하지만 read함수에서 110바이트를 읽어들이고 있음으로 BOF가 발생하게 되며 sprintf함수에 의해 memory leak으로 canary까지 구할 수 있을 것으로 보인다. Canary LEAK canary의 뒤 1바이트가 \x00으로 존재한다는 가정하에 11바이트를 전송하여 leak 해본다. 그리고 ..
이번 문제는 base64에 대한 것을 공부하게 되는 계기가 되었다. FILE ELF 64bit, Dynamically linked, stripped 실행 BabyMISC을 실행하게 되면 STAGE 01이 뜨면서 입력값을 받음으로 hello?을 했더니 종료가 되어진다. IDA Main을 확인해 보니 간단하게 3가지의 스테이지가 있는것처럼 보인다. sub_400EA8(STAGE 01) 분석하는 과정에서 name을 재정의를 몇몇 하였다. return 과정에서 True 참이 되면 다음 STAGE로 넘어갈 수 있다. 1. 입력 값과 기존 base64의 길이가 같아야 한다. 2. base64로 decode할 시 값이 같아야 한다. 3. 입력 값은 달라야 한다. base64에 대해 알아야 풀 수 있으며 아래의 링크에..
FILE 파일을 다운로드 받은 후에 정보를 확인해 본다. 32bit, dynamically linked, stripped로 되어있다. 적용된 보호기법 Functions IDA IDA를 통해서 메인과 서브함수들의 중요한 것만 확인해 본다. (Strings 찾기로 접근음) 8181포트로 socket을 열어준다. v2의 크기는 40바이트이지만 입력값을 받을땐 100바이트로 받고 있음으로 1번과 2번 선택에서 BOF가 발생하게 된다. v3= ebp-0xC v2= ebp-0x34 v2의 크기는 0x34-0xC =0x28이다. Main에서 Fork()함수로 인해 Canary는 고정이 되어있을 것이다. 먼저 Canary 값을 구하기 위해 v2의 크기만큼 40바이트를 채워본다. Canary Leak Pwntools로 ..