[Facebook CTF 2019] Products Manager

2019-06-07

Facebook CTF에 출제된 100 포인트짜리 웹 문제 Products Manager이다

소스코드가 주어지고 들어가보면 View top 5 products, Add your own product, View details of your own product 세 가지 기능이 있다.

코드를 보면 친절하게도 플래그가 어디있는지까지 알려준다!!

View top 5 products는 문제 페이지에 들어갔을 때 처음보이는 기능 그대로 테이블의 위에서5개 데이터를 불러온다.

View details of your own product는 상품의 이름으로 검색한 후 상품을 추가할 때 입력했던 상세정보도 같이 불러온다.

상품을 추가할 땐 Secret 값을 입력해주어야 하는데, Secret값을 체크하는 함수도 있다.

view.phphandle_post() 함수를 보면 View details of your own product 함수를 이용할 때
입력하는 name과 secret 값이 존재하는지, Null이 아닌지 검사한 후
check_name_secret()의 결과를 검사한다. False가 아니면 상품 정보를 출력해준다.
그런데 위의 get_product() 함수는 WHERE name = ? and secret = ?이 아닌 name만으로 데이터를 반환해준다.
name이 facebook이지만 secret은 내가 알고있는 값이라면? name과 secret을 일치시켜 facebook이라는 이름을 가진 첫 번째 상품을 반환시킬 수 있다.

하지만 이미 facebook이라는 이름은 존재하기 때문에 추가시킬 수 없다.
뒷부분에 공백을 추가해 facebook 을 name으로 임의의 값을 secret으로 해주면 상품을 추가할 수 있다.
이 문제에선 MitNy1234567890을 사용했다.

추가가 되었다면 View details of your own product으로 가서
Name:facebook
Secret: MitNy1234567890
를 입력해보자

플래그!!