정보보안/SQL Injection5 BLind SQL Injection SQL 질의 결과가 노출되지 않는 곳에서 사용하는 공격 기법 공격 순서 및 예시 (1) 파라미터가 전송되는 페이지 에서 참 / 거짓을 구분할 수 있는 페이지를 확인한다. (2) 참/거짓 값으로 인증시도 ( 인젝션 가능 여부 ) ex ) a' and '1' ='1 , a' and '1' ='2 (3) substring(자를 문자열, 자를 문자의 시작점, 자를 문자의 개수) 을 이용하여 디비이름 / 테이블 / 컬럼확인 ex) a' and substring(select database(),1,1)) (4) ascii 코드로 비교하여 문자 확인 ex) ascii(substring(select database(),1,1))) > 70 위의 3, 4번을 통해 첫번째 두번째 세번째 ... 반복하여 원하는 데이터 값을.. 2021. 11. 5. 로그인 식별/인증 동시 sql문 개행방식 SQL Injection 공격을 하다 보면 뒤를 -- 나 # 으로 주석 처리해서 인증 우회하는 경우가 많다. 하지만 sql 쿼리문을 작성하는 개발자들은 코드의 가독성 때문인지, 성능 때문인지 sql문을 개행(엔터) 처리 해서 많이 작성하곤 한다. 그래서 개행 처리된 로그인 인증에도 인증 우회가 가능한지 알아보기로 했다. 이전의 동시방식에서 개행 처리한 코드 sql 문을 개행 처리해도 쿼리문이 정상 작동하는지 로그인이 잘 되었다. if ($result = $mysqli->query("select * from member where id='".$userId."' and pw ='".$userPw."';")){ while ($row = $result->fetch_object()) { $Exist = "1"; .. 2021. 11. 3. SQL Injection 식별/인증 Hash처리(인증 우회) 해킹에 대한 인식이 이전보다 많이 높아진 지금은 아마 웬만한 사이트들 비밀번호는 저장할 때 해시 처리해서 보관하고 있을 것이다. 또한, 비밀번호를 암호화해서 보관하지 않으면 법적으로도 문제 된다고 알고 있다. 이전에 인증 우회 공부할 때 식별 인증 동시, 분리 방식 두 가지를 했는데 오늘은 그 두 방식에 비밀번호를 해쉬 처리하는 로그인 방식에 대해서 인증 우회를 테스트를 해볼 것이다. 일단 가장 많이 쓰인다는 2가지 해시들을 간단하게 알아보았다. MD5 MD5 (Message-Digest algorithm 5) MD5는 메시지 축약 알고리즘으로써, 파일 무결성 검사 용도로 많이 쓰이고 있습니다. 128bit의 해쉬를 제공하며, 암호 와와 복호화를 통하여 보안용 도로도 많이 쓰입니다. 하지만 암호화 결함이.. 2021. 11. 1. SQL Injection ( 인증 우회 ) 식별/인증 분리방식 이전 글( 식별/인증 동시 방식 )과 다르게 유저가 입력한 아이디에 대한 패스워드를 가져와 코드 안에서 if 문으로 비교하였다. 동시 방식에서 사용했던 ' or '1 , ' or '1 우회방법을 대입해보니 실패 두 번째 참으로 만들고 뒤를 주석 처리해 버리는 ' or 1=1# 그러나 아무 아이디만 넣었을 때와 다르다는 건 아이디에 대해서는 우회가 되는 것 같다. 따라서 추측해보면, 코드 아래에서 if 조건을 우회하려면 단순히 참, 거짓이 아니라 내가 아이디에 임의로 패스워드에 입력할 값을 주입시켜야 할 것 같았다. 지금까지 지식에선 SQL문에 내가 원하는 값을 주입하는 것은 이전 강의에서 들었던 union이 전부였고, 그래서 union을 사용해서 우회해 보았다. 처음에 컬럼의 개수를 파악해 보려고 adm.. 2021. 10. 31. 이전 1 2 다음