노말틱 모의해킹

[2주차 코칭] 이제 보안 시작

debugginglog 2025. 4. 16. 22:12

2주차 리뷰

1. 2주차의 핵심은 DataBase이다
2. 그러면 DataBase와 이야기하는 주체는 WAS
3. and, or 개념 정리
4. sql InJection 때 parameter 위치에 따라서 결과가 달라지는 경우가 많음

 

Q&A

1. "SELECT 문은 객체를 반환하고, INSERT 문은 boolean을 반환하더라고요, 저는 이걸 조건문으로 이용해서, 회원가입성공여부를 판단하는데 활용했는데, 혹시 조건문말고 다른 방식으로 활용할 수 있는 예가 있을까요?"
2. "HTML에서 input의 type을 password로 하면 입력값이 가려지잖아요. 그런데 MySQL에도 그런 식으로 비밀번호가 자동으로 가려지거나, 해시 처리되는 기능이 따로 있나요?"
3. 추가로, insert하는 구문에서, where id='$id' 라고 주니까, 재미삼아 해본 인젝션에 뚫리던데, 사용자로 부터 받는 입력값을 바로 넣지 않는 방법도 있나요?
    PreparedStatement 개념 미리 공부해보면 좋을 것
4. DB에 데이터 넣었다가 지웠는데 다음 데이터를 넣으니 idx가 지웠던 이후 번호로 나오는데 왜 그런건가요?

5. 과제 하면서 header 함수를 사용해서 페이지 이동을 하려고 했는데 header already sent 라고 뜨며 에러가 떴습니다. 찾아보니 화면에 output이 있어서 그렇다고 하는데 왜 그런걸까요?

6. mysqli_fetch_array() 를 수업때 사용하셨는데 assoc 말고 사용하신 이유가 있나요? array가 row방식과 assoc방식 둘다 불러온다는건 알고 있습니다 특별한 이유가 있어서 인지 궁금해서 남깁니다
    별다른 이유는 없다.
7. DB 접속계정 정보가 노출되는게 불편해서 db_config.php 파일을 별도로 만들고 다른 파일에서 해당 파일을 include 하는 형태로 했는데  db_config.php에도 비밀번호가 그대로 노출되어 있으니 암호화해서 파일에 저장하고 db접속할 때 인코딩된 정보를 통해 접속하게 하는 방법이 있을까요
8. 지금은 하드코딩으로 PHP파일 내부에 데이터베이스 로그인을 위한 ROOT와 그 비밀번호를 변수에 DEFINE 해놓고 썼습니다.
전역설정을 통해서 다른 PHP파일에는 따로 선언 없이  다른사람은 접근하기 어렵게 하되 관리자는 그걸 수정하거나 쉽게 사용할 수 있는 방법이 있을까요?
9. 웹서버의 Shell이 털렸다는 것은 무조건 DB도 털렸다는 것. 털리지 않으면 해커가 착한 거라고 말씀하셨는데
여기서 말씀하시는 웹서버가 정확히 웹서버일까요? 아니면 WAS서버인걸까요? : 정확히 말하면 WAS이다.
만약 웹서버와 WAS가 구분되어있고, 웹서버나 WAS 서버 중 하나의 Shell 만 뚫렸어도 DB가 털리는게 자명한걸까요?
    WAS가 털리면 DB계정이 있을 수 밖에 없다. 이건 자명하다
    웹서버가 털렸을 때는 정적인 코드만 준다고 했다. Web서버는 WAS를 건들 수 있는 권한이 있기 때문이다.
10. 집 pc에 가상머신을 키고 노트북으로 ssh 연결한뒤, 밖에 나가서  공부하고싶은데 어떤것을 검색하여 공부하면 될까요?

 

3주차 프리뷰

1. 아이디랑 비밀번호가 맞았다면 이건 웹서버가 어떻게 유지되는가?
2. 세션, 쿠키, 세션 ID
3. 식별, 인증 과정
4. 로그인 로직 자체를 다양한 케이스로 변형 가능함