13. A1 - 인젝션
• 특정 DB명을 알아내고싶다!!
• Information_schema DB에 있는 SCHEMATA
테이블에는 존재하는 모든 DB 이름이 존재한다.
• 여기서, SCHEMA_NAME 컬럼에 있는 모든 값들
을 가져온 후 특정 DB명을 알아내면 됨.
14. A1 – 인젝션
• 특정 DB명을 알았다. 테이블명도 알아보자.
• Information_schema DB에 있는
TABLE_CONSTRAINTS 테이블에는 DB명에 맞는
테이블명이 존재한다.
15. A1 - 인젝션
• 우선 SCHEMA_NAME부터 가져와보자.
• 다음과 같은 쿼리를 날리면, information_schema가 뜬다
– select schema_name from information_schema.SCHEMATA limit 0,1
16. A1 - 인젝션
• 가져온 값은 information_schema 이다.
이 값을 한방에 바로 맞추면 최소 독심술사;
• 여기서 substr을 이용해 앞에 하나를 잘라준다.
select substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1);
• 이러면 “i”가 나온다.
• 근데 i는 숫자가 아님.숫자로 바꿔주자.
17. A1 - 인젝션
• 문자를 숫자로 표현할 땐 대표적으로 ascii코드를 쓴다.
• 그래서 ascii 함수를 씀.
select ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1))
• 그럼 다음과 같이 i가 숫자인 105로 나오는데,
• 이걸 105인줄 모르는 상태에서 맞추려면 술게임인 업다운을 해야함
19. A1 - 인젝션
• 그럼 이제 information_schema.SCHEMATA에
있는 첫번째 테이블의 첫번째 값의 첫번째 알파
벳을 알아낼 수 있음. 굳
20. A1 - 인젝션
• 그럼 이제 이걸 코드를 짜보면,
admin' and (select ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1)) > ???);
• 가 된다. 이걸 로그인 창의 ID에 치면 된다.
21. A1 - 인젝션
• 이런 식으로 하나하나씩 맞춰가면
information_schema를 알 수 있고, 좀 더하면
• 전체를 알 수 있다.
• 근데 수동으로 하기엔 고행급이라 자동화해서함.
40. A3 - XSS
• Htmlspecialchars와 같은 함수를 써서 막는다.
• 특수문자나, 스크립트 명령어들을 작성이 될 때
막는다.
41. A4 – 취약한 직접객체 참조
• 이전에 있던 Editor에서 글 수정을 할 경우
타인의 글도 수정할 수 있던 현상 같은 것.
• 참조를 할 때, 참조의 주소를 꼬아놓는 것
• 등등과 같은 참조와 관련한 문제를 이용.
42. A4 – 취약한 직접객체 참조
• 세션을 통하여 매 페이지마다 세션검증을
하도록 함.
• 인가되지 않은 파일이 다운로드 되지 않도
록 막는다.
43. A5 – 보안 설정 오류
• 대부분 Php.ini에서 문제가 발생됨.
• 3가지만 해놓아도 절반이상은 막는다.
• Register_globals = Off
• magic_quotes_gpc = On
• allow_url_fopen = Off
44. A5 – 보안 설정 오류
• Register_globals = Off
• 저걸 안하면 변수가 SESSION인지, GET인
지, POST인지가 필요하지 않음.
• 따라서 $_SESSION[‘chmod’]=0 인데 URL
뒤에 ?chmod=1을 넣는다면 권한상승.
45. A5 – 보안 설정 오류
• magic_quotes_gpc = On
• Sql injection이나, 혹은 싱글쿼터(‘)나 더블
쿼터(“)가 들어가는 공격을 막아준다.
• ‘ -> ’
• “ -> ”
46. A5 – 보안 설정 오류
• allow_url_fopen = Off
• Fopen과 같은 파일 관련 함수에서 URL로
파일을 읽어오는 것이 불가능해짐.
47. A6 – 민감 데이터 노출
• 비밀번호와 같은 민감한 데이터들이 노출
될 것을 우려하여, 암호화를 하는 등의 일.
• SSL과 같은 암호화에 대한 내용들임.
• 혁보드는 현재 비밀번호를 MD5라는 해쉬
방법을 사용하여 저장한다.
48. A7 – 기능 수준의 접근통제 누락
일반 사용자는
http://203.249.25.64:8080/test/phpinfo.php
이런걸 못보게 해야한다.
혹은 관리자페이지와 같은것들..
49. A8 - CSRF
• 사이트가 신뢰하는 사용자를 통해 공격자
가 원하는 명령을 사이트로 전송함.
• 가령 editor.php?title=“저는 바보입니다 ㅋ
ㅋ”&contents=“이거 리얼임” ….
• 등으로 되어있는 링크를 클릭하면 저런
내용의 글이 작성될 것임..