-
카테고리
-
세부 분야
보안
-
해결 여부
미해결
select * from member where id= '1' or '1'='1' --
21.03.04 05:58 작성 조회수 371
1
SQL 인젝션 관련하여 질문드립니다.
제목처럼 -- 나 # 등의 주석처리로 로그인을 우회할 수 있는 경우는
insequre_website 의 login.php 에서 로그인을 처리하는 로직 (하단)처럼
id값과 pw 값을 동시에 받아서 query 로 넘기는 경우만 해당하는거죠?
$query = "select * from members where id='{$id}' and password='{$password}'";
즉, 하단의 로직처럼 일단 id가 있는지 확인하고,
id가 있을 경우 pw값 일치여부를 보는 경우엔 주석처리로 로그인 우회가 안되는게 맞는거죠?
감사합니다!
<?php
session_start();
$connect = mysqli_connect("localhost", "", "", ") or die("fail");
//입력 받은 id와 password
$id=$_GET['id'];
$pw=$_GET['pw'];
//아이디가 있는지 검사
$query = "select * from member where id='$id'";
$result = $connect->query($query);
//아이디가 있다면 비밀번호 검사
if(mysqli_num_rows($result)==1) {
$row=mysqli_fetch_assoc($result);
//비밀번호가 맞다면 세션 생성
if($row['pw']==$pw){
$_SESSION['userid']=$id;
if(isset($_SESSION['userid'])){
?> <script>
alert("로그인 되었습니다.");
location.replace("./index.php");
</script>
<?php
}
else{
echo "session fail";
}
}
else {
?> <script>
alert("아이디 혹은 비밀번호가 잘못되었습니다.");
history.back();
</script>
<?php
}
출처: https://chamggae.tistory.com/83 [silqia 공부 블로그]
답변을 작성해보세요.
0
크리핵티브
지식공유자2021.03.04
안녕하세요.
이 경우에도 SQL 인젝션 취약점이 존재할 경우 인증 우회, 데이터 조회 공격이 가능합니다.
말씀하신 인증우회 패턴으로는 되지는 않으나 , 공격 방식을 조금 다르게하면 공격이 가능합니다.
때문에 SQL 인젝션에 대한 취약점을 방어하시는 것이 1순위가 되겠죠.ㅎㅎ
답변 1