시스템 해킹

[Whois] 시스템해킹 - 버퍼오버플로우1

美味코드 2021. 11. 22. 23:51

첫번째 student 파일을 IDA 프로그램을 사용해서 코드로 확인해 보니 v5가 1234567890을 만족할 때 flag를 알려주는 것을 확인했습니다.

 

그러나 scanf로 입력받는 것은 v4 뿐이며 if 문에서는 v5를 비교하기 때문에 v4의 값을 채워줘야 합니다. (버퍼오버플로우 발생시키기)

 

그렇기에 v4[28]은 총 28칸을 채워주어야 합니다.

 

이후, v5에는 1234567890값을 넣어주어야 하는데 어셈블러가 16진수(Hex)를 좋아하기에 계산기를 사용했습니다.

 

IDA에서도 코드를 확인해보니 역시 16진수와 비교하고 있습니다. 위 사진을 보면 cmp(compare) 49960D2h 를 비교하여 flag를 출력해줍니다.

*h는 16진수가 아님

가상머신을 이용해 칼리리눅스를 켜주었습니다. 쉘에서 python으로 바이너리에 stdin을 전달하는 방식을 이용했고, "A"라는 변수를 28칸 채워준 뒤 리틀엔디언 방식으로 위 Hex 값을 넘겨주었습니다.  마지막으로 | 터미널을 통해 (서버) (ip주소) 에 앞에 명령어를 넘겨주었습니다.