Challenge 9
9번 문제입니다.
예전에 한번 풀어보았는데 이번에는 문제가 조금 바뀌어있네요??
기존엔 아파치 인증을 우회해야 문제가 보였는데 지금은 바로 문제를 풀 수 있게 되어 있네요?
위에 그림처럼 1,2,3의 링크와 password를 입력하는 부분이 있습니다.
이 문제는 소스가 제공이 되지 않습니다.
1,2,3을 클릭 해 봅시다.
1번을 누르면 Get으로 no=1 파라미터를 넘겨 주면서 Apple이 출력됩니다.
2번을 누르면 Get으로 no=2 파라미터를 넘겨 주면서 Banana이 출력됩니다.
3번을 누르면 Secret이 출력되면서 아래 힌트가 출력됩니다.
보통 이렇게 출력 값이 다르게 if문이나 case문을 이용한 블라인드 SQL Injection이 가능합니다.
우선 필터링되는 문자가 있는지 입력해보고 어떤 것들을 사용할 수 있는지 확인합니다.
if문의 경우 if(조건,참일 때,거짓일 때)처럼 쓸 수 있습니다.
if(substr(id,1,1)='?',1,2) 처럼 이렇게 if문과 substr을 이용하여 id값의 한글자씩 가져와 비교하여 참일 경우 1을 리턴, 거짓일 경우 2를 리턴하여 블라인드 SQLi 를 할 수 있습니다.
우선 공백, 비교연산자도 필터링이 되어 있습니다.
이를 우회하면 if(substr(id,1,1)in(?),1,2) 처럼 사용할 수 있습니다.
ascii()도 사용할 수 없기 때문에 ?에 hex값을 이용하여 비교해야합니다.
'A' = 0x41 처럼 문자에 대해 Hex값이 있습니다.
if(substr(id,1,1)in(0x41),1,2)를 이용하여 힌트에서 처럼 11자리의 문자열을 알아내어 password 부분에 입력하면 성공입니다.
'Wargame | CTF > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge 12 (0) | 2016.11.13 |
---|---|
[Webhacking.kr] Challenge 10 (0) | 2016.11.13 |
[Webhacking.kr] Challenge 8 (0) | 2016.11.13 |
[Webhacking.kr] Challenge 7 (0) | 2016.11.09 |
[Webhacking.kr] Challege 6 (0) | 2016.11.07 |