본문 바로가기

Hacking/- Webhacking.kr

[Webhacking.kr] Problem 03

반응형

350점에 해당하는 문제이다. 이 문제의 경우에는 적당한 Guessing을 통해 Injection Vector를 찾아서 공격을 할 수 있는지 여부를 묻는 문제이다.


문제 링크


문제 페이지를 보면 아래와 같은 네모네모 로직 문제를 볼 수 있다. 이 부분은 툴도 사용할 필요가 없을 정도로 간단한 문제이기 때문에 금방 풀 수 있다.

네모 칸을 클릭하면 검정색으로 바뀌게 되고, 그래서 그 검정색이 네모네모 로직의 조건을 만족하도록 해주면 된다.


그래서 이것을 풀어주면 아래 사진과 같다. 그래서 이렇게 모양을 만들어주고 아래 'gogo'버튼을 누른다.


그러면 아래와 같이 이름을 입력할 수 있는 창이 뜬다.


여기에 아무런 이름이나 넣고 'write' 버튼을 누른다.

그러면 아래와 같이 이 때까지 내가 입력했던 이름들을 비롯해서 answer, ip 값이 나타나는 것을 알 수 있다.

이름의 경우에는 직접 입력한 값이고, IP의 경우에는 서버에서 바로 알아낼 수 있다. 하지만 answer의 경우에는 직접 입력을 해주지 않았음에도 값이 전달되어서 그 값이 출력되고 있다는 것을 알 수 있다.


그래서 앞의 이름을 입력할 수 있는 창으로 돌아가서 소스코드 보기를 해보면 아래와 같이 input type="hidden"으로 answer 값을 받고 있는 것을 확인할 수 있다.



이 값을 이용해서 값을 업데이트를 하는지 확인해보기 위해 value 값을 "12345"로 변경해보고 'write'버튼을 눌러보았다.


그러면 아래와 같은 화면을 볼 수 있다. 즉 이것을 통해서 answer값은 hidden값으로 입력받으며 출력 화면의 경우에는 IP값과 answer값을 이용해서 보여준다는 것을 알 수 있다.

즉, SQL 코드로 표현해보면 SELECT * FROM TABLE_NAME WHERE ip="{UserIP}" && answer={answer값} 이라고 유추를 할 수 있다. IP의 경우에는 변경해서 Injection을 할 수가 없기 때문에 answer값을 변조해서 Injection을 시도하면 된다.


그래서 answer 값을 '1010100000011100101011111||1'로 변조시켜서 'write' 버튼을 누르면...



우리가 원하는데로 모든 컬럼에 대한 값을 뽑아올 수 있다. 즉 이를 통해 'admin'이라는 이름의 answer가 new_sql_injection이라는 것을 확인할 수 있다.



따라서 new_sql_injection이 Flag라는 것을 알 수 있고, 이 값을 인증 페이지에서 인증을 하면 문제가 해결된다.


반응형

'Hacking > - Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] Problem 02-2  (0) 2016.03.19
[Webhacking.kr] Problem 02-1  (0) 2016.03.18
[Webhacking.kr] Problem 01  (1) 2016.03.12
[Webhacking.kr] 0. webhacking.kr 소개  (0) 2016.03.10