첫번째 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주소) 에 앞에 명령어를 넘겨주었습니다.
'시스템 해킹' 카테고리의 다른 글
[Whois] 시스템 해킹 - Format String Bug (0) | 2021.12.08 |
---|---|
[Whois] 시스템 해킹 - OOB(Out-Of-Bound) (0) | 2021.12.06 |
[Whois] 시스템해킹 - Integer Issues (0) | 2021.12.06 |
[Whois] 시스템해킹 - 버퍼오버플로우3 (0) | 2021.11.23 |
[Whois] 시스템해킹 - 버퍼오버플로우2 (0) | 2021.11.23 |