webhacking.kr 35번

입력하는 부분이 하나있기 때문에 소스를 볼 때 form태그 주변을 주의깊게 봐야할거 같다,

form부분을 먼저 살펴보면 get방식으로 전달됨을 알 수 있고

input에 입력된 것이 phone이라는 이름으로 전달되고

hidden으로 id라는 것이 전달되는데 값이 guest다.

php부분을 살펴보면

phone의 값이 존재하고 id값이 존재할때 if문을 충족시킨다.

preg_match(a, b)함수는 b에 a의 내용이 존재하는지 확인하는 것이다. 즉 phone에 앞에 해당되는 문자가 없으면 된다.

if문 속 2번째 if문은 id의 길이가 5를 넘으면 안된다는 것을 알 수 있고

세번째 if문은 id가 admin이면 you are not admin이 출력된다.

 

sql쿼리문을 살펴보면 chall35테이블에 id와 내 아이피주소 phone을 전달하고 있다.

이어서 php를 계속 살펴보자면

isAdmin에 들어가는 sql문을 살펴봐야 할거 같다.

chall35중 admin인 아이디의 아이피값을 가지고 있는데 

db안에 admin이라는 아이디를 가지면서 ip는 나의 아이피를 가져야 하는 값이 있어야 함을 알 수 있다.

solve가 있는 if문을 주목해보면

isAdmin의 ip가 내 아이피와 같아야한다. 앞에서 본 것과 같은 말이다.

 

sql인젝션을 활용해서 풀어야 하는 문제다.

처음 입력 창에

1), ('admin', '내아이피', 1

이렇게 입력을 해주게 되면 문제가 풀린다.

'문제풀이 > 보안 writeup' 카테고리의 다른 글

webhacking.kr 27번  (0) 2021.03.18
webhacking.kr 18번  (0) 2021.03.18
webhacking.kr 33번  (0) 2021.03.16
webhacking.kr 16번  (0) 2021.01.21
webhacking.kr 12번  (0) 2021.01.21
myoskin