1

해킹 찍먹 1.sql injection

해킹 찍먹 1.sql injection

노아의 블로그

    목차
반응형

갑자기 웹 개발을 하다가 과연 우리가 저장하는 데이터는 얼마나 안전할까 궁금해서 내가 만든 사이트를 공격해보았다.
Gpt와 kisa 시큐어코딩 문서를 참고함

1.Sql injection : 사용자 입력란에 쿼리문을 삽입해서 공격하는 기법.

예: 로그인의 작동방식이
사용자가 입력한 정보를 select해서 결과를 가져오는것인데

select * from user where Id = ? and pw = ?
이런 퀴리문이 있다고 가정한다.
?에는 사용자의 입력이 들어간다.
정상인이라면 아이디와 비번을 넣겠지만

공격자는 id란에 userid or 1 = 1 --를 넣는것이다.
그러면 쿼리문은
select * from user
where id = 'userid' or 1=1 --and pw = ? 이된다.

--는 주석을 뜻하기때문에 and pw = ?은 지워지고
select * from user where id = 'userid' or 1=1
이 남게된다. id가 틀려도 1=1이 참이니까 무조건 참이 되서
select * from user 이 실행되게되고 정보가 다
나오는것이다.

하지만 나는 이 공격에 실패했다. 왜냐하면 prepardstatement를 사용하고있었기때문.

prepardstatement는 변하지 않는 쿼리문을 미리 생성해놓고
단순히 입력값을 넣는것으로 공격자가 입력한 값으로 쿼리문이 생성이 안되고 모두 문자열로 취급된다. 그래서 공격 쿼리를 넣어도 select가 되지않고
where id = 'userid or 1=1 --' and pw = ?
요런식으로 될것임.
statement에서 단순히 개발에 있어서 더 편하게 사용하는줄 알았는데 보안의 목적도 있다는걸 알았다.




반응형

'해킹' 카테고리의 다른 글

SQL학습  (0) 2023.04.14
4번 로그인 우회문제  (0) 2023.04.10
해킹 찍먹 2.XSS  (0) 2023.04.01