일단 정의하고 시작하겠다.
해킹은 프로그램이나 시스템의 예외 동작을 찾아내는 행위이다.
여기서 예외 동작이라 함은 프로그래머가 전혀 예상하지 못했던 경우에 일어나는 곁다리 동작을 뜻한다.

존나 와닿지 않으니 예를 들어보자. 로그인 페이지를 예로 들겠다.

보통 이런건 데이터베이스를 써서 구현들 많이 한다.
너님들이 로그인하겠다고 접속할때마다 들어온 정보랑
미리 저장해놓은 회원정보, 즉 아이디랑 비밀번호(일반적으로 평문을 해싱해서)를 대조해보는 식으로 구현을 하지.
이때 SQL로 데이터베이스에 있는 정보를 요청하곤 한다. (DBMS랑 SQL 모르면 좆잡고 공부해라.)
이때 예전의 별 생각 없는 프로그래머들은 아이디에 특수문자가 들어갈거라고 예상하지 않았지.
생각해봐. 일반인이 SQL로 인증을 하는지 알 리도 없고 알 필요도 없지.
근데 컴퓨터 안에 뭐가 있는지 아는 사람은 몇 번 실험해보고 안다.
'아 얘가 특수문자 넣는건 생각 안하고 있구나, 안에서 SQL을 쓰니깐 적절히 잘 속여먹으면 그냥 되겠다' 하고 말이야.
원래는 로그인 기능이랍시고 만들었는데 외부에서 이상한 데이터를 넣으니 다른 요상한 짓을 하더라, 이런 얘기지.
그게 SQL 인젝션이다.
프로그램의 구조를 알면 뜯어볼 수 없는 다른 프로그램이라도 안이 어떻게 돼 있을지 대강 추측할 수 있다.
그 다음부턴 추측이 맞는지 검증하기만 하면 된다.

해커들은 기존의 시스템에서 헛점을 찾아낸다. 해커들은 겉에서 프로그램의 동작을 보고 내부를 추측한다.
그 과정에서 일종의 통찰력이 필요하고, 그것은 프로그래밍 지식이랑 OS의 동작 원리에서 나온다.

그러니까 남이 해놓은 프로그램 가져다가 허세부리는 소위 스크립트 키드들은 좆잡고 공부해라.
허세부릴 시간도 아껴서 공부해라.