level 15

2020. 9. 1. 23:21

전 문제와 거의 똑같지만, 한 가지 다른 점은 check 변수가 포인터 변수라는 점입니다.

따라서, check 변수에 0xdeadbeef를 넣는다고 해도 0xdeadbeef에 해당하는 위치의 메모리에 값을 가져오기 때문에 절대 if 문 조건을 만족시킬 수 없습니다.

 

하지만, 소스코드에서 아예 0xdeadbeef의 값을 써놓고 대놓고 비교하고 있기 때문에 우리는 0xdeadbeef의 값이 있는 곳을 가리키게만 하면 됩니다.

 

제 예상으로는 0xdeadbeef의 값을 가지고 있는 메모리 주소는 0x080484b0 ~ 0x080484b6 사이에 있을 것입니다.

 

2바이트 밀려서 나오네요.

 

자 이것으로 0xdeadbeef의 위치는 0x80484b2인걸 알았으니, check에 이 주소를 넣읍시다.

 

buf는 $ebp-0x38에, *check는 $ebp-0x10에 있네요.

buf(20) + bufdummy(20) + address(4)

 

성공적으로 쉘을 획득했습니다.

'[▒] 보안 > FTZ' 카테고리의 다른 글

level 17  (0) 2020.09.01
level 16  (0) 2020.09.01
level 14  (0) 2020.09.01
level 13  (0) 2020.09.01
level 12  (0) 2020.09.01

BELATED ARTICLES

more