49
이이이 (sehkmg@Kroot) 이 7 이 이이이이 이이이 !!!!! 이이

이주혁 ( sehkmg@Kroot )

  • Upload
    kipp

  • View
    102

  • Download
    2

Embed Size (px)

DESCRIPTION

제 7 회 해킹캠프 마지막 !!!!! 발표. 이주혁 ( sehkmg@Kroot ). 해커스쿨 서버 사무실. PHP. 해커스쿨 서버 사무실. ……. ……. ……. ……. ……. ……. ……. ……. ……. ……. id name password admin admin 011101 멍멍 정구홍 12345 sehkmg 이주혁 54321 Vrat 이제일 13579. PHP. ……. ……. ……. ……. ……. ……. ……. ……. ……. ……. 채용 공고. - PowerPoint PPT Presentation

Citation preview

Page 1: 이주혁 ( sehkmg@Kroot )

이주혁 (sehkmg@Kroot)

제 7 회 해킹캠프 마지막 !!!!! 발표

Page 2: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP

Page 3: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHPid name password

admin admin 011101멍멍 정구홍 12345sehkmg 이주혁 54321Vrat 이제일 13579

…….…….…….…….……..

…….…….…….…….……..

…….…….…….…….……..

…….…….…….…….……..

Page 4: 이주혁 ( sehkmg@Kroot )

채용 공고근무 시간 : 24 시간 , 숙식 제공휴무 : 없음조건 : 빠르게 읽는 능력 , 빠르게 쓰는 능력 , 시키는대로 말 잘 듣는 사람시급 : 9990 원나이 : 상관 없음

Page 5: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

Page 6: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

로그인 시도– id: 멍멍 , pw: 12345

Page 7: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

members 테이블에서 id 가 ‘멍멍’이고 pw 가 ‘ 12345’ 인 데이터 추출해줘

넵 !멍멍 정구홍 12345

Page 8: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

회원가입 시도– id: 오타해커 , pw: 97531

이름 : 김동완

Page 9: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

members 테이블에 id 가 ‘오타해커’고이름이 ‘김동완’이고 pw 가 ‘ 97531’ 인 데이터 추가해줘

넵 ! 추가 완료했습니다 !

Page 10: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

회원정보 수정 요청 – id: Vrat, 이름 : 이재일

Page 11: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

members 테이블에서 id 가 ‘ Vrat’ 인 사람의 이름을 ‘이재일’ 으로 수정해줘

넵 ! 수정 완료했습니다 !

Page 12: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

회원 탈퇴 요청– id: sehkmg, pw:

54321

Page 13: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

members 테이블에서 id 가 ‘ sehkmg’ 이고pw 가 ‘ 54321’ 인 데이터 삭제해줘

넵 ! 삭제 완료했습니다 !

Page 14: 이주혁 ( sehkmg@Kroot )

그런데 !!!

Page 15: 이주혁 ( sehkmg@Kroot )

나쁜놈

mysql

Page 16: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

로그인 시도– id: admin,

pw: 1’ 또는 id 가 ‘ ad-min

Page 17: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

음… . 이상한데 ??

Page 18: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

members 테이블에서 id 가 ‘ admin’ 이고 pw 가 ‘ (1’ 또는 id 가 ‘ admin)’ 인 데이터 추출해줘

Page 19: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

members 테이블에서 id 가 ‘ admin’ 이고 pw가 ‘ 1’ 또는 id 가 ‘ admin’ 인 데이터 추출중…

Page 20: 이주혁 ( sehkmg@Kroot )

members 테이블에서id 가 ‘ admin’ 이고 pw 가 ‘ 1’

또는id 가 ‘ admin’ 인

데이터 ?????

??????

???

??????

Page 21: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

넵 !admin admin 011101

Page 22: 이주혁 ( sehkmg@Kroot )

그 후 !!

Page 23: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

Page 24: 이주혁 ( sehkmg@Kroot )

안되겠어 !!

Page 25: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

로그인 시도– id: admin,

pw: 1’ 또는 id 가 ‘ ad-min

Page 26: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

문자열 안에 ‘ (s-ingle quote) 가 들어가있네 ? \ 로 escape 시켜주자 !!

Page 27: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

members 테이블에서 id 가 ‘ admin’ 이고pw 가 ‘ 1\’ 또는 id 가 \‘admin’인 데이터 추출해줘

Page 28: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

members 테이블에서 id 가 ‘ admin’ 이고pw 가 ‘ 1\’ 또는 id 가 \‘admin’인 데이터 추출중…

Page 29: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

그런 데이터는 없습니다 !

Page 30: 이주혁 ( sehkmg@Kroot )

귀찮다…

Page 31: 이주혁 ( sehkmg@Kroot )

해커스쿨 서버 사무실

PHP mysql

앞으로 문자열 안에 ‘ (single quote)가 있으면 무시하도록 해

넵 ! 알겠습니다 !!

Page 32: 이주혁 ( sehkmg@Kroot )

실제로는 ??

Page 33: 이주혁 ( sehkmg@Kroot )

APM

Client(Browser)

Web Server(Apache)

PHP Parser DBMS(MySQL)

1) 문서 요청

2) 스크립트 실행요청

3) Query

4) Data

5) 실행결과

6) 결과 전송

33

Page 34: 이주혁 ( sehkmg@Kroot )

SQL Statements

members 테이블에서id 가 ‘멍멍’이고pw 가 ‘ 12345’ 인데이터 추출해줘–SELECT * FROM members

WHERE id=‘ 멍멍’ AND pw=‘12345’

Page 35: 이주혁 ( sehkmg@Kroot )

SQL Statements

members 테이블에id 가 ‘오타해커’고이름이 ‘김동완’이고pw 가 ‘ 97531’ 인데이터 추가해줘–INSERT INTO members (id, 이름 ,

pw) VALUES (‘ 오타해커’ , ‘ 김동완’ , ‘97531’)

Page 36: 이주혁 ( sehkmg@Kroot )

SQL Statements

members 테이블에서id 가 ‘ Vrat’ 인 사람의이름을 ‘이재일’ 으로수정해줘–UPDATE members SET 이름 =‘

이재일’ WHERE id=‘Vrat’

Page 37: 이주혁 ( sehkmg@Kroot )

SQL Statements

members 테이블에서id 가 ‘ sehkmg’ 이고pw 가 ‘ 54321’ 인데이터 삭제해줘–DELETE FROM members WHERE

id=‘sehkmg’ AND pw=‘54321’

Page 38: 이주혁 ( sehkmg@Kroot )

나쁜놈

mysql

Page 39: 이주혁 ( sehkmg@Kroot )

SQL Injection

정상적인 접근

id= 멍멍 , pw=12345 로 접속 시도

members 테이블에서 id 가 ‘멍멍’이고 pw가 ‘ 12345’ 인 데이터 추출해줘(SELECT * FROM members WHERE id=‘ 멍멍’ AND pw=‘12345’)

Page 40: 이주혁 ( sehkmg@Kroot )

SQL Injection

SQL Injection 공격

id=admin, pw=1’ 또는 id=‘adminid=admin, pw=1’ OR id=‘admin

members 테이블에서 id 가 ‘ admin’ 이고 pw가 ‘ 1’ 또는 id=‘admin’ 인 데이터 추출해줘(SELECT * FROM members WHERE id=‘admin’ AND pw=‘1’ OR id=‘admin’)

Page 41: 이주혁 ( sehkmg@Kroot )
Page 42: 이주혁 ( sehkmg@Kroot )

SQL Injection 에 대한 보안• 첫번째 방법 : 추가적 보안 프로그래밍

id=admin, pw=1’ OR id=‘admin

id=admin, pw=1\’ OR id=\‘admin

addslashes(1’ OR id=‘admin);

Page 43: 이주혁 ( sehkmg@Kroot )

SQL Injection 에 대한 보안• 두번째 방법 : SQL Statement 수정

SELECT * FROM members WHERE id=‘admin’ AND pw=‘1’ OR id=‘admin’

‘SELECT * FROM members WHERE id=%s AND pw=%s’, admin, 1’ OR id=‘admin

Page 44: 이주혁 ( sehkmg@Kroot )

실습 : SQL Injection

kroot.yonsei.ac.kr/hcamp

Page 45: 이주혁 ( sehkmg@Kroot )
Page 46: 이주혁 ( sehkmg@Kroot )
Page 47: 이주혁 ( sehkmg@Kroot )

SELECT comment FROM chat WHERE id=1

Page 48: 이주혁 ( sehkmg@Kroot )

SELECT comment FROM chat WHERE id=1 OR 1

Page 49: 이주혁 ( sehkmg@Kroot )