1998년에 phrack이라는 유명한 보안 포럼에 SQL injection이라는 기법이 소개됨
select * from member where id='{uid}' and pw='{upw}'
웹어플리케이션에서 디비로 쿼리를 보낼때 특수문자를 집어넣어서 쿼리를 튀기는게 가능하더라 대충 그런 내용이였음.
보통 보안업계에서 새로운 기법이 발표되면 연구자들이 poc를 증명하는데 1~2년.
공격자들이 이를 연구해서 실제로 써먹을 수 있는 exploit을 작성하는데 1~2년이 걸림.
sql injection 역시 4년정도 후에 공격사례가 발견되기 시작함.
역사는 재미없으니까 줄이자.
웹어플리케이션과 디비. 두가지의 어플리케이션 사이에서 발생하는 이슈인지라 이를 제대로 막는건 쉽지않고,
공격자들의 입장에서도 내부 코드를 볼 수 없는 웹어플리케이션 너머의 디비를 공격해야하는지라 꽤 골때리는 기법임.
이렇게해서 blind sql injection, time based blind sql injection, error based sql injection, error based blind sql injection, indirect sql injection 등등등
존나 많은 바리에이션 기법들이 공개되었고, 아직도 공개되고있음.
근데 니들이 아는 sql injection은 ' or '1'='1 밖에 없잖아?
대충 개념 설명을 해주면
blind sql injection
sql injection을 해서 원하는 데이터가 딱 출력이 되면 좋은데 안그럴때가 있음.
예를들어
userid = query(select 1 from member where id={uid} and pw={upw})
if userid: loginSuccess()
이딴 로직이라고 하면 니들이 아무리 쿼리를 튀겨도 로그인이 성공했다, 실패했다 밖에 모르잖아?
그럴때 True, False 를 기반으로 한 blind sql injection을 하게됨.
version() 의 결과값을 알고싶다고 해보면
select 1 from member where id='<b>'or ascii(substr((select version()),1,1))=[1~128] or '' and pw=''
일케하면 version() 의 첫글자의 ascii값이 i면 true, 아닐때는 false가 리턴되겠지
이런식으로 1bit씩 데이터를 꺼내는거임
time based blind sql injection
위에랑 연결되는데 True, False 조차 안보여줄때가 있음.
select 1 from member where id='</span><b style="font-size: 13.3333px;">'or if(ascii(substr((select version()),1,1))=[1~128],sleep(2),1) or '' and pw=''
요런식으로 True일경우 2초간 sleep(), False일경우 바로 return을 시켜줘서 response time이 몇초인가를 측정해서 데이터를 꺼낼수도 있음
더 쓰기 귀찮으니까 짧게하면 에러메세지에 원하는 데이터를 노출시키는거 가능,
에러메세지를 안보여주면 에러가 났는지 안났는지 를 사용해서 blind로 공격도 가능하고.
-
대충 어떤 기법이 있는지는 알았고 그럼 이거 아직 되냐? 존나 구식기법 아니냐? 하는데
됨. 된다. 된다고.
기법이 언제 나왔는지가 중요한게 아니라 개발자가 이 기법을 제대로 알고있느냐가 중요함.
prepared statement 이딴거 쓰면 안전한줄 아는데 php,mysql을 써도 제대로 짜면 안뚫리고
무슨 휘황찬란한 프레임워크, 대단한 함수를 써도 개발자가 실수하면 뚫림
그니까 모두들 내가 만든 https://github.com/red-velvet/los 에 가서 sql injection을 공부하고 안전한 웹어플리케이션을 만들도록 하자
거절하엿읍니다
모의해킹의뢰 합니다.
메일주소 남겨주시면 연락드리갯읍니다
루비는 정수정~ 정수정은 루비~
크리스탈은 사랑입니다 - dc App
이였->이었 (받침 있으면 이었 없으면 였 이로 끝나면 받침 없으므로 였 아니었은 예외 인명엔 였(예 : 길동이였다) 성까지 쓰면 이었다(예 : 홍길동이었다)) [리듬 맞춤법 봇♬]
소스 보고 있는데 이거 2015년에 만든거임?;;
굿 - DCW
Sadly, by personal reasons LoS has been shutdown at 2015.08.02 Thanks to the 791 members who enjoyed los
오 los만드신분이!