Wargame/Webhacking.kr Writeup

Webhacking.kr :old-9 Write up

Ate1es 2021. 7. 6. 18:15

문제 시작부터 no 파라미터에 BLIND SQL INJECTION 냄새가 폴폴난다.

no에 다른 값을 주면

아무것도 출력 되지 않는다.

필터링이 강하게 걸려있어서 몇 가지 우회를 해주었다. (‘ “ = ascii hex ord 등등 필터링 되어있다.)

no 는 where 절에 포함될 것이므로 if 구문 사용해서 blind sql을 시도해본다.

no3의 id가 password라고 했으므로 id 를 뽑아내보자.

if구문 → if(조건,참일때,거짓일때)

따라서 위의 구문은 id 길이가 5이면 Apple 아니면 아무것도 출력하지 않는다.

라는 뜻이다. Apple 이 출력 되었으므로 id 길이는 5? 라고 생각했으나

헷갈려서 바보짓 반복..

if 구문이 끝나고 참이 떨어졌으므로, no 에는 1이 들어간다.

즉, no=1 의 id 길이가 5라는 뜻이다. [원래 존재하는 where절 조건을 놓침]

따라서 구문을 수정해서 no=3 인 id를 뽑아내야 하기 때문에

해당 구문으로 수정하고, Secret이 출력되면 참이라고 할 수 있다.

여러 번 시도해본 결과 no=3인 id의 길이는 11자리인 것 같다. 이제 파이썬 코드를 작성해보자

like() 안에 싱글쿼터 필터링으로 인해 문자가 들어가지 못하기때문에 파이썬 코드에서 hex값으로 넣어주었다.

정답은 : alsrkswhaql 이다 !!