티스토리 뷰

포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.

2번 문제이다.

별게 없어 보인다.

소스코드를 보자.

소스코드도 별로 없다.

하지만 주석 부분에 admin.php에 접근 시 혼내준다는 문구가 보인다.

접속해보자.

무언가 입력하는 창이 나온다.

이곳에 정답을 입력하면 문제가 풀리는 것 같다.

이곳의 소스코드 또한 별 볼일 없어 보인다.

흠..

여러 번 둘러보다가 이전 소스코드에서는 시간을 표현해준다는 걸 발견했다.

그리고 쿠키값을 보니 time을 인자로 받는 값이 있는 것도 발견했다.

time의 값을 1로 주고 소스코드를 봤더니 변화가 있었다.

바로 소스코드에서의 시간이 사진과 같이 변했다.

그러다 문득 든 생각이 참과 거짓일 때 0과 1을 출력할까?라는 생각도 들었다.

테스트 결과 정답이다.

참 조건
참 결과

 

거짓 조건
거짓 결과

이제 문제 해결의 실마리가 풀렸다.

해당 부분에서 injection을 진행해보자.

일단 database() 개수를 출력해보자.

time의 value값: (select count(database()))

database() 갯수

1개이다.

이제 이름을 알기 위해 길이를 추출하고 이름까지 추출해보자.

길이 : (select length(database()))

database()이름의 길이 수

database()의 이름은 chall2로 나왔다.(=table_schema)

이번 코드에서는 이진 탐색 코드를 조금 더 발전시켰다.

이진 탐색에 필요한 검색 횟수를 넘어가는 순간 데이터가 없는 것으로 판단해 인젝터를 중단시키는 코드를 추가했다.

이제 테이블의 갯수와 이름을 파악하고 우리가 필요한 테이블로의 접근이 필요하다.

테이블 개수 : (select count(table_name) from information_schema.tables where table_schema='chall2')

2개의 테이블이 있다.

테이블 이름의 길이를 알아보자.

 

테이블명을 추출해보자.

첫 번째 테이블 길이: (select length(table_name) from information_schema.tables where table_schema='chall2' limit 0,1)

13자리이다.

두 번째 테이블 길이:(select length(table_name) from information_schema.tables where table_schema='chall2' limit 1,1)

3자리이다.

아마.. 우리에게 필요한 건 첫 번째 테이블이 아닐까 하고 추측해본다..ㅋㅋ

테이블 이름에서 추측이 맞았다고 알려준다.

admin_area_pw이 추출되었다.

테이블 이름을 알았으니 바로 칼럼수를 알아보자

time value: (select column_name from information_schema.columns where table_name='admin_area_pw')

1개 있다.

바로 이름을 추출하자.

칼럼명까지 추출 완료했다.

이제 pw값을 알아보자.

처음에 길이를 제대로 설정 안 하고 돌렸더니 중간에 잘렸다.

그래서 100으로 주고 다시 했다.

kudos_to_beistlab가 추출되었다.

아까 들어가 본 admin.php에 값을 입력하러 가자.

 

문제 해결!!

시행착오

1. 테이블 스키마를 먼저 찾아야 테이블명을 찾을 수 있다.(mysql)

   database()=table_schema>table_>column_>value

2. sql injection 공격 위치는 링크 창에서만 할 수 있는 건 아니다.

3. length()과 len()의 차이로 mysql, mssql 구분이 가능하다. (순서대로)

 

느낀 점

1. 2번 문제부터 접근 난이도가 느껴져 두려웠다..

'SQL injection > webhacking' 카테고리의 다른 글

Webhacking 6번  (0) 2022.03.12
Webhacking 5번  (0) 2022.03.09
webhacking 4번  (0) 2022.03.08
webhacking 3번  (0) 2022.03.07
Webhacking 1번  (0) 2022.03.06
댓글