ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PentesterLab 2
    Security/Test Bed 2019.03.21 10:44

     

    SQL Injection

     

    Example 1 (MAKE IT TRUE)


    PoC

     



    Example 2 (LIMIT-MAKE IT TRUE)


    PoC


    limit 함수

    반환되는 출력수를 제한하는 함수임

    반환 행 수 제한 우회
    사용자 로그인 시, 쿼리에서 반환되는 사용자가 1명이도록 소스코드에서 제한하는 경우가 있음
    limit 함수를 사용하면 반환되는 행 수를 제한할 수 있으므로 이를 이용하면 됨




    Example 3 (ESCAPE-MAKE IT TRUE)


    Hint

    싱글 쿼터를 입력해도 에러 메세지가 반환되지 않음


    PoC


    Normal Query

    SELECT * FROM users WHERE username='root' AND password='qwer';


    Injection Query

    SELECT * FROM users WHERE username='\' AND password=' or 1=1 #';

    싱글 쿼터 우회

    이스케이프를 이용하여 싱글 쿼터를 제거


    이스케이프 문자(\)

    특정 문자 앞에 붙여 정의되어 있는 원래의 의미를 벗어나게 해주는 문자




    Example 4 (MAKE IT TRUE)

    http://192.168.30.130/sqlinjection/example4/?req=username%3d%27hacker%27

    Docde URL = http://192.168.30.130/sqlinjection/example4/?req=username='hacker'


    Hint


    PoC

    http://192.168.30.130/sqlinjection/example4/?req=username='' or 1=1#

    http://192.168.30.130/sqlinjection/example4/?req=1=1


    Normal Query

    SELECT * FROM users WHERE username='root';


    Injection Query

    SELECT * FROM users WHERE username='\' AND password=' or 1=1 #'




    Example 5 (LIMIT-UNION)

    http://192.168.30.130/sqlinjection/example5/?limit=3


    Hint


    PoC

    http://192.168.30.130/sqlinjection/example5/?limit=3 union all select * from users


    union과 union all차이

    union은 중복되는 레코드를 제거하지만,

    union al의 경우에는 별도의 중복 제거 과정을 거치지 않음

    limit 함수 우회

    union을 사용하면 됨

    풀이와 상관 없는 참고 (그냥 갑자기 궁금해서 찾아본 거)

    order by 다음에 limit 절 사용해야 함 (반대로 사용 불가)




    Example 6 (GROUP BY, UNION)

    http://192.168.30.130/sqlinjection/example6/?group=username


    Hint


    PoC

    http://192.168.30.130/sqlinjection/example6/?group=username union all select * from users

    http://192.168.30.130/sqlinjection/example6/?


    group by 절

    테이블 select 조회시 결과를 그룹으로 묶어서 가져옴

    SELECT column FROM table GROUP BY column

    해당 컬럼의 값에 따라 데이터를 그룹 짓고 중복된 열을 제거함

    group by 우회

    union을 사용하면 됨




    Example 7 ()

    http://192.168.30.130/sqlinjection/example7/?id=1


    Hint


    PoC

    http://192.168.30.130/sqlinjection/example7/?




    Example 8 ()


    PoC




    Example 9  ()


    PoC




    Authentication(인증)

     

    Example 1 (BASIC AUTHENTICATION)


    PoC

     



    Example 2 (BASIC AUTHENTICATION)

     

    PoC


    HTTP의 인증방식

    BASIC, DIGEST, SSL Client, Form Base


    기본 인증

    1. 요청 (GET)

    2. WWW-Authenticate (401 Unauthorized)

    3. Authorization(GET)

    4. Authentication-Info


    401 응답을 받은 클라이언트는 아이디:비밀번호를 Base64방식으로 인코딩해서 Authorization 헤더 필드에 포함하여 송신함

    암호화를 하지 않기 때문에 복호화가 쉬운 특징이 있음




    Example 3 (COOKIE)


    PoC




    Example 4 (COOKIE-MD5)


    PoC

     



    Example 5 (REGISTER)


    Hint


    PoC


    Register 우회

    웹에서는 사용자 생성시 대소문자를 구분하지만 MySQL은 대소문자를 구분하지 않는데, 이를 이용해서 우회하면 됨




    Example 6 (REGISTER)


    Hint

     

    PoC


    Register 우회

    웹에서는 공백을 무시하지 않지만 MySQL은 공백을 무시하는데, 이를 이용하여 우회하면 됨






    Captcha

     

    Example 1 (AUTHENTICATION)


    PoC




    Example 2 (SOURCE CODE-AUTHENTICATION)


    PoC

    Step 1) 소스코드에서 hidden값으로 captcha가 넘어가는 것을 확인함


    Step 2) Step1에서 얻은 captcha값을 입력함

     



    Example 3 (COOKIE-AUTHENTICATION)


    PoC

    Step 1) Cookie값으로 captcha가 인코딩되어 넘어가는 것을 확인함


    Step 2) Step1에서 얻은 captcha값을 입력함




    Example 4


    PoC



    Example 5


    PoC



    Example 6


    PoC



    Example 7


    PoC



    Example 8


    PoC



    Example 9 


    PoC






    Authorization(인가)

     

    Example 1 (VERTICAL ESCALATION)

    Step 1) user1 계정으로 로그인함


    Step 2) user1 계정만 접근할 수 있는 글들을 확인함


    Step 3) Confidention가 제목인 글을 확인함


    PoC

    step 1) 로그인하지 않은 상태임


    step 2) user1 계정의 비밀글 url로 접속하면 user1 계정의 비밀글 확인이 가능함




    Example 2 (HORIZONTAL ESCALATION)

    Step 1) user1 계정으로 로그인함


    Step 2) user1 계정만 접근할 수 있는 글들을 확인함


    Step 3) Confidential user1 (2) 가 제목인 글을 확인함


    PoC

    step 1) user1 사용자로 로그인한 상태임


    Step 2) user1 계정의 비밀글 url에서 글을 구분하는 번호를 바꿔주면 user 2 계정의 비밀글 확인이 가능함

     



    Example 3 (HORIZONTAL ESCALATION)

    Step 1) user1 계정으로 로그인함


    Step 2) user1 계정만 접근할 수 있는 글들을 확인함


    Step 3) Confidential user1 (2) 가 제목인 글을 확인함


    Step 4) Edit this info 버튼을 눌러 글 수정 페이지를 확인함


    PoC

    step 1) user1 사용자로 로그인한 상태임


    Step 2) user1 계정의 글 수정 페이지의 url에서 글을 구분하는 번호를 바꿔주면 user 2 계정의 글 수정 페이지로 접근이 가능함

     





    Mass Assignment

     

    Example 1CHANGE PARAMETER-REGISTER)


    hint


    PoC




    Example 2 (CHANGE PARAMETER-REGISTER)

     

    PoC

    Step 1) 등록한 test계정으로 로그인한 상태임


    Step 2) 프로필 변경 페이지로 들어감


    Step 3) user[admin]=1 파라미터를 추가함




    Example 3 (CHANGE PARAMETER-INFORMATION)


    PoC

    Step 1) user1 계정으로 로그인함


    Step 2) Company 1 정보를 확인함


    Step 3) user[company_id]=2 파라미터를 추가함

     






    TIP
    아래와 같은 에러 페이지가 나올 경우 메모리 크기 늘려주면 됨







    [참고]

    asciitable.com

    regexr.com

    convertstring.com

    md5hashgenerator.com




         : 의문


         : 모르는 문제



    'Security > Test Bed' 카테고리의 다른 글

    PentesterLab 2  (2) 2019.03.21
    DVWA(Damn Vulnerable Web Application)  (0) 2019.03.19
    PentesterLab 1  (0) 2019.03.18

    댓글 2

~ ^ . ^ ~