일단 정의하고 시작하겠다.
해킹은 프로그램이나 시스템의 예외 동작을 찾아내는 행위이다.
여기서 예외 동작이라 함은 프로그래머가 전혀 예상하지 못했던 경우에 일어나는 곁다리 동작을 뜻한다.
존나 와닿지 않으니 예를 들어보자. 로그인 페이지를 예로 들겠다.
보통 이런건 데이터베이스를 써서 구현들 많이 한다.
너님들이 로그인하겠다고 접속할때마다 들어온 정보랑
미리 저장해놓은 회원정보, 즉 아이디랑 비밀번호(일반적으로 평문을 해싱해서)를 대조해보는 식으로 구현을 하지.
이때 SQL로 데이터베이스에 있는 정보를 요청하곤 한다. (DBMS랑 SQL 모르면 좆잡고 공부해라.)
이때 예전의 별 생각 없는 프로그래머들은 아이디에 특수문자가 들어갈거라고 예상하지 않았지.
생각해봐. 일반인이 SQL로 인증을 하는지 알 리도 없고 알 필요도 없지.
근데 컴퓨터 안에 뭐가 있는지 아는 사람은 몇 번 실험해보고 안다.
'아 얘가 특수문자 넣는건 생각 안하고 있구나, 안에서 SQL을 쓰니깐 적절히 잘 속여먹으면 그냥 되겠다' 하고 말이야.
원래는 로그인 기능이랍시고 만들었는데 외부에서 이상한 데이터를 넣으니 다른 요상한 짓을 하더라, 이런 얘기지.
그게 SQL 인젝션이다.
프로그램의 구조를 알면 뜯어볼 수 없는 다른 프로그램이라도 안이 어떻게 돼 있을지 대강 추측할 수 있다.
그 다음부턴 추측이 맞는지 검증하기만 하면 된다.
해커들은 기존의 시스템에서 헛점을 찾아낸다. 해커들은 겉에서 프로그램의 동작을 보고 내부를 추측한다.
그 과정에서 일종의 통찰력이 필요하고, 그것은 프로그래밍 지식이랑 OS의 동작 원리에서 나온다.
그러니까 남이 해놓은 프로그램 가져다가 허세부리는 소위 스크립트 키드들은 좆잡고 공부해라.
허세부릴 시간도 아껴서 공부해라.
개년글
나는 어릴때 카이스트 나오는 드라마(이름기억안남..로봇질하다가 해킹질하다가 하는거) 보면서 바둑이나 장기두듯이 싸우는걸줄 알앗는데
현실은 비번 1234 같은거 처보는 거라는거보고 충격
존나 하나도 안멋잇음
그런 디테일은 본인이 찾아서 공부해야된다고 본다
근데 특문 들어가봣자 그냥 예외처리에 걸려서 띵가띵가될뿐일거같은데... 해킹썰푼다고 적으셧는데 님도 별로 잘 알기보다는 어디서 줏어들은 이야기인듯
특문 들어가면 그냥 틀린거로 치고 틀렷습니다. 하고 반환하겟져; 아무 사이트나 가서 로그인 해보셈 특문쓴다고 다를게 뭐잇음 걍 틀렷어 ㅄ아 하고 계속 시도하면 5회이상 틀리면 궁시렁궁시렁...하겟지..
# 이나 -- 같은 SQL 주석같은거
그래 추가설명 하겠다. 특수문자라던지 SQL에 쓰이는 표현식을 제대로 걸러내지 않으면 전혀 다른 의도의 쿼리가 만들어진다. 그 현상으로 로그인을 쌩까고 들어간다던지, 남의 아이디로 로그인이 된다던지, 아님 DB 내용을 싸그리 날려버릴수도 있다. 서버세팅이 허술하면 전체 회원 정보를 빼낼수도 있다.
값 검증도 안하고 올리겟음? 설마
정규식 한줄만껴놔도 다 걸러줄거같은데
168.126// 요즘엔 대비가 잘 돼 있다. 요 몇년전까지 SQL 인젝션이 취약점 탑 5안에 들었던건 알고 하는 소리냐? 실제로 SQL인젝션은 OWASP에서 매년 발표하는 취약점 TOP 10에 꾸준히 들어가고 있는 헛점이다.
제가 어나니머스 회원이랑 친한데 그사람 심각한 표정으로 검은화면에 타자 존나빨리 뚜들기면 하얀글자 막 올라감 그러다가 일반인이 모르는 뭔가가 뜨면 예쓰! 하면서 다뚫어버리던데요
https://www.owasp.org/index.php/Top_10_2010-Main
그게 정규식으로 대비가 되냐 안되냐는 별개의 문제고. 그게 필요한지조차 모르는 개발자가 더러 있다.
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
OWASP 활동하는 성님들이 친절하게도 이런 문서를 만들어주곤 하지
가끔은 정규식 엔진 취약점이 또.... 그리고 너무 대비를 철저하게 하면 경우에 따라선 DoS에 취약해지는 경우도 많음 ㅡㅡ)
제로보드 4는 쿠키값만 바꿔주면 비밀글도 볼수 있음.
디시에도 sql인젝션 취약점 있는데