취약점 분석/SEH Unicode 2

[Anyburn 4.3 x86] SEH Unicode Exploit 분석

[Anyburn 4.3 x86] SEH Unicode Exploit https://www.exploit-db.com/exploits/46507 스택기반은 원인 근처에서 터지므로 딱히 원인분석이라 하기도 민망하다. Image file name에서 BOF 취약점 발생. 때려박아 넣자. [원인] 1. 입력값의 길이는 계산 되었으나 2. 목적지와의 크기 검증이 없음. 입력값의 크기가 계산된 후 _write_string 함수를 호출하는데, 목적지 크기와의 검증이 없다. 입력값의 크기가 loop counter로 들어와 wchar 한글자씩 옮기는 loop. 1. 목적지 버퍼와의 크기 검증이 없어 목적지 버퍼를 훨씬 넘어서는 스택을 다 덮어버리고 2. 스택 끝까지 도달하여 강제 예외발생. 3. 덮어쓴 SEH를 통해 E..

ascii to unicode 변환 (codepage별 정리)

Ascii to Unicode 변환 (Codepage 별로 정리) 많은 사람들이 ascii에 그냥 00붙는 거 아니냐? 하곤 한다. - ex) 0x01 --> 0x01 0x00 - ex) 0x0a --> 0x0a 0x00 절반만 맞다. int MultiByteToWideChar( UINT CodePage, --- 어떤 unicode로 변환할래? DWORD dwFlags, LPCSTR lpMultiByteStr, --- 변환 할 문자열이 담긴 곳 int cbMultiByte, LPWSTR lpWideCharStr, --- 변환 결과 문자열이 담길 곳 int cchWideChar ); ascii -> unicode로 변환은 MultiByteToWideChar 함수를 통하는데, 여기서 CodePage에 따라 ..