checksec으로 확인해보면 NX가 꺼져있어서 쉘코드를 사용할 수 있다!! 처음에 이름을 입력받을 때 쉘코드를 넣어주면 된다! 여기서 나중에 알게 되겠지만 이중포인터 구조라서 쉘코드 뒤에 쉘코드의 주소를 하나 박아줘서 이중 포인터 구조를 만들어 줘야한다.
아이다로 열어보면 C++코드가 보일 것이다!!! 눈이 아프기 때문에 아이다로 짧게 훑고 동적 디버깅을 했다!! 동물 이름을 설정할때 overflow가 나고 heap의 사이즈는 고정이라서 두개 할당하고 첫번째꺼 해제한 후 다시 할당할 때 포인터를 덮어버리면 끝! 근데 여기서 주의할점은 이중포인터 구조라서 앞서 쉘코드뒤에 박아놨던 쉘코드를 가리키고 있는 포인터의 주소로 덮어야한다.
^^
[HITCON_Training] LAB 14 (0) | 2019.07.15 |
---|---|
[HITCON_Training] LAB 13 (0) | 2019.07.13 |
[HITCON_Training] LAB 12 (0) | 2019.07.11 |
[HITCON_Training] LAB 11 (0) | 2019.07.11 |
[HITCON_Training] LAB 10 (0) | 2019.07.10 |