write-up(web)/webhacking.kr

[Webhacking.kr] Challenge old-02 write-up

ssongk 2022. 11. 14. 23:50

문제 화면입니다.

주석을 확인해보니 admin.php가 존재하는 걸 알 수 있습니다

admin.php로 가주면 비밀번호를 입력하라고 나오는데

여기선 sql 인젝션이 먹히지 않습니다.

 

방향을 잡기 어려워 라업을 잠깐 보니

이 문제에선 쿠키에 time 값이 새로 세팅되어 있으며

이 값으로 블라인드 sql 인젝션을 수행할 수 있다고 합니다.

 

time 값을 바꿔주면 주석에 적힌 시간이 바뀌는데

0을 넣어주면 새로 세팅되며

양수를 넣어주면 해당 값 만큼 더해진 시간 값을 주석으로 반환해줍니다.

time : 1
time : 100

 

또한 조건식을 넣어주면 참일 때 1, 거짓일 때 0을 가져옵니다.

time : 1=1
time : 1=2

소스 코드를 제공하지 않으므로 정확한 함수를 알 순 없지만

mysql의 from_unixtime이라는 함수로 추측해볼 수 있습니다.

from_unixtime 함수는 위 주석처럼 파라미터로 받는 숫자를 가지고 날짜로 변환해줍니다.

 

이제 데이터베이스 -> 테이블 -> 컬럼 -> 데이터 순으로 정보를 찾아주어야 합니다.

 

db의 길이가 6임을 알 수 있습니다.

substr와 ord함수를 사용하면 db의 이름을 한 문자씩 알아낼 수 있습니다.

나머지도 같은 방법으로 알아내면 됩니다.

 

다음으로 테이블 이름을 알아내야 합니다.

information_schema를 활용하면 됩니다.

테이블은 총 2개가 있습니다.

하나씩 이름을 알아보겠습니다.

 

length()와 ord(substr())를 통해 테이블의 이름을 구할 수 있습니다.

다 구하면 아래와 같이 나옵니다.

 

다음으로 admin_area_pw 테이블의

컬럼 개수와 이름을 알아내야 합니다.

 

컬럼 개수는 1개이고 길이는 2입니다.

동일한 방식으로 구해주면 컬럼 이름이 pw임을 알 수 있습니다.

 

마지막으로 이제 데이터(레코드)를 구해주면 됩니다.

pw 컬럼엔 1개의 데이터가 존재하며 17자 입니다.

구해주면 비밀번호를 알 수 있습니다.

 

이제 admin.php에 입력해주면

문제가 풀립니다!


레퍼런스

https://aidencom.tistory.com/378

 

[ Webhacking.kr ] old 2 Write Up

Start Blind SQL Injection 문제입니다. 시스템 테이블에 접근해가며 풀어야합니다. Analysis 다음은 문제의 메인 페이지 입니다. 페이지의 소스코드는 다음과 같습니다. Restricted areaHello stranger. Your IP is lo

aidencom.tistory.com