해킹/SQL Injection(11)
-
SQL Injection - 대응방안
SQL Injection의 대응 방안은 정말 간단합니다. 바로 Prepared statement를 사용하면 끝납니다. 이것을 사용하면 SQL Injection 공격을 할 수 없다고 합니다. 기존에 사용하던 방법은 select * from meberwhere id = $get['id'] 를 해가지고 입력을 받은경우 SQL을 만드는데, 이것때문에 사용자 입력까지 SQL이 인식되기에 문제죠! 그래서 어떤 방향을 가지느냐.미리 이것을 준비해놓는겁니다.입력을 받기전select * from member where id = ?이라는 쿼리를 서버측에서 미리 만들어요. 그 다음에 ? 자리에 사용자 입력을 쏙 넣어버립니다. 즉 쿼리의 기본틀을 컴파일해놓고 ?자리에 들어오는 모든 입력은 문자열처리를 하는거죠. 그러므로 할수..
2023.04.28 -
SQL Injection - Blind SQLi
Blind SQLi은 말 그대로 Blind. 데이터의 결과 Result가 안보이는곳에서 주로 쓰입니다만. 거의 모든곳에서 사용할수있는 놈입니다. 어떤 기법이냐면. 로그인할때를 예시로 들어보겠습니다. 로그인 할때 알맞는 아이디를 입력하면 로그인이 성공되었습니다가 뜨겠죠. 하지만 알맞지 않는 아이디를 입력한다면? 로그인이 실패되었습니다가 뜨겠죠. 이를 통해서 참과 거짓을 구별할수만 있다면 조건을 삽입해서 맞추어 나가는겁니다. 이러한 SQL 이 있다고 가정해보겠습니다. select id,password from member where id = ? 데이터베이스에는 이러한 정보가 있다고 가정해보겠습니다. id : testhack password : 1234 그렇다면. testhack를 입력하면 저기 조건이 참으로..
2023.04.28 -
로그인 우회 3번째문제
문제의 목표는 주어진 계정으로 로그인 하는것. 일단 SQL Injection 공격이 되는지 확인하기위하여 간단한 ' , # 같은것을 보내보았다. 오류가 나지 않고 단순히 실패라고 뜨는것을 보아 예외처리가 다 되어있는듯 하였다. 그러므로 오류 메시지는 볼 수 없다고 판단하였다. 이제 injection 공격 확인용 mario' and '1' = '1 과 정상적인 비밀번호를 입력했다. 정상적으로 작동되는것을 확인할 수 있고 Injection 공격이 통하는것을 볼 수 있다. select ? from member where id = 'mario' and 1 = 1 #' and password = ? password에도 위와 같은 코드를 보내보았다. 하지만 위와 다르게 작동이 안된다. 이를 통해서 인증과 식별을 따..
2023.04.23 -
데이터 추출 두번째 문제
데이터 추출 두번째 문제에서 삽질을 했다. 1. select문을 쓸때는 괄호를 쳐야한다. 그 사실을 몰라서 계속 삽질했다. 짜증나는점은 Chat Gpt한테 코드 복붙했는데 바로 Injection 공격 코드라고 불법적인 일은 관여안한다고 ....ㅋㅋㅋㅋㅋㅋ 2. 에러메시지에 0x3a가 나와서 정답이 약간 짤린다.(이건 문제없음) 또한 0x3a와 섞여서 0x3aflag가 테이블 이름인줄 알았다. 그것때문에 계속 안되서 몇번동안 다시하다가 곰곰히 보니까 다 0x3a가 붙어있어서 앞에 보니까 깨닳음.... 아니 : 으로 나오면 당연히 내가 붙인거로 인식하는데 0x3a뭔가 느낌있어서 몰랐음
2023.04.23 -
SQL Injection - Error Based SQLi
SQL Injection 공격중에 Error Based SQLi가 있습니다. 간단히 말하자면 고의적으로 오류를 내는겁니다! 아니 오류가 나면 DB에서 데이터를 못터는것 아니야? 그렇게 생각하실수도 있습니다. 하지만 오류가 나면 무엇이 나올까요??? 바로 "에러메시지" 입니다. 어디어디서 무엇무엇이 에러가 났습니다~ 라고 친절히 설명해주는 에러 메시지죠. 이런 에러메시지가 해커한테까지 친절하면 안되죠! 그래서 보통은 예외처리를 합니다만, 생각지도 못한 오류거나 처리를 안했거나 한다면 그냥 털리는거죠! 에러중에는 두가지 에러를 뽑을 수 있습니다. 바로 문법적 에러 , 논리적 에러이죠. 문법적 에러는 말 그대로 문법 에러입니다. db에서 s샐랙트 * fro롬 테2블; 극단적인 예시지만 이렇게..ㅋㅋㅋㅋ 하면 ..
2023.04.23 -
새로 만든 로그인 로직 적용
이런식으로 적용해볼수가 있는것이죠 전에 만들었던것은 pw까지 검증을 안해서 pw도 추가해줍니다.
2023.04.23