Load of SQLInjection 문제풀이
·
보안/웹·모바일
Load of SQLInjection 홈페이지 3. goblin GET방식으로 no에 입력값을 넘겨주어야 하는 상태이다. 2번문제에서 필터링이 추가로 존재한다. 싱글쿼터, 더블쿼터, 백틱 사용 불가능. 나이제 이정도는 껌이다. 정규표현식 공부했거든 아무튼 필터링이 없다면 그냥 no=0 or id='admin' 넘겨주면 되는데.. admin을 문자열로 묶어줄 친구가 없다. 이럴 때 사용할 수 있는 건 바로 admin 문자열에 해당하는 아스키코드 값을 전달해주는 것이다. 바이너리값 or 헥스값 or 옥텟값 옥텟은 안되더라 ㅋ 0x61646d696e를 id로 전달하면 된다. 즉, no=0 or id=0x61646d696e 이 문제에서 배워갈 점: 싱글쿼터 백틱 더블쿼터 등이 필터링 되어 있어서 내가 원하는 문..
Union SQL Injection 실습
·
보안/웹·모바일
Union SQL Injection 이번 실습은 회원가입 > 주소 입력창에서 이루어진다. Union - A 테이블에서 필요한 데이터와 B 테이블에서 필요한 데이터를 합친다. - 여기서 데이터는 칼럼으로 합치는 듯함. - 단, 합치려는 두 SELECT 문의 칼럼의 수는 같아야 한다. [예시] table = login, class SELECT id,pw FROM login union SELECT eng, kor FROM class; (o) SELECT id,pw ,email FROM login union SELECT eng, kor FROM class; (x) 주소 찾기 페이지에서는 칼럼 수 5개까지 입력 가능하다. 즉, 사용되는 칼럼은 5개라는 의미. 추측이 가능하다. 띄어쓰기 기준으로 5개 우편번호 / ..
Error-based SQL Injection 실습
·
보안/웹·모바일
Error-Based SQL Injection :: 에러 메세지가 친절할 때. 가장 친절/가장 쉬워짐 [DB명찾기] (구문) ' and db_name() > 1 -- (결과) nvarchar 'oyesmall'을 데이터형식 int로 변환하지 못했씁니다. db_name()은 MSSQL에서 데이터베이스 이름을 반환하는 친구임. 데이터베이스 이름이 1보다 크냐? 하고 주석처리 왜 nvarchar값을 int랑 비교하냐??. 하며 데이터베이스 이름 겟ㅋ [TABLE명 찾기] (구문) ' having 1=1 -- (결과) 열 'Members.num'이 집계함수나 GROUP BY절에 없으므로 SELECT 목록에서 사용할 수 없습니다. [COLUMN명 찾기] (구문) ' group by num -- (결과) 열 Mem..
Non-Relational DBMS이란
·
보안/웹·모바일
MongoDB JSON 형태인 Document를 저장한다. - 스키마를 따로 정의하지 않아 각 Collection에 대한 정의가 필요하지 않음 - JSON 형식으로 쿼리 작성 가능 - _id 필드가 Primary Key 역할을 함 [예제] RDBMS와 NRDBMS 비교 RDBMS: SELECT * FROM inventory WHERE status = "A" and qty
Blind SQL Injection
·
보안/웹·모바일
dreamhack web 공부 Blind SQL Injection 시 사용하는 함수 - ascii(''): 전달된 문자를 아스키 형태로 반환. ascii('a')=97 - substr(): 문자열에서 지정한 위치부터 길이까지의 값을 가져온다. - substr('문자열',시작위치,몇개) SELECT * FROM user_table WHERE uid='admin' and ascii(substr(upw,1,1))=114-- ' and upw=''; uid=admin이고 substr(upw칼럼의 첫번째 글자)=114(r) 인 것이 있느니뇨? SELECT * FROM user_table WHERE uid='admin' and ascii(substr(upw,1,1))=115-- ' and upw=''; uid=ad..
CSRF(Cross-Site Request Forgery)
·
보안/웹·모바일
CSRF(Cross-Site Request Forgery) - 사용자를 속여서 의도치 않은 요청에 동의하게 하는 공격 - 사용자의 의도와는 무관하게 공격자가 의도한 행위를 요청하게 하는 공격 공격자는 임의의 사용자의 권한으로 서비스 기능을 사용 Ex.1 사용자의 계정으로 금액을 송금하여 금전적인 이득 취하기 Ex.2 .비밀번호를 변경하여 계정 탈취 Ex.3 관리자 계정을 공격하여 마음대로 공지사항 작성 CSRF 공격을 하기 위해서는 공격자의 악의적인 스크립트를 사용자가 실행해야 함. 악의적인 스크립트는 서버에게 HTTP 요청을 보내는 코드이다. 즉, 사용자가 서버에서 악의적인 HTTP 요청을 보내도록 유도하는 것. HTML 태그인 태그를 사용하거나 태그를 사용하는 방법이 있다. 이를 통해 HTTP 요청을..
XSS(Cross-Site Scripting) 기초 공부
·
보안/웹·모바일
공부 사이트: dreamhack web XSS(Cross-Site Scirpt) 클라이언트 사이드 취약점의 대표적인 공격이다. 웹 리소스에 악성 스크립트를 삽입하여 이용자의 웹 브라우저에서 해당 스크립트가 실행되도록 함 - 주로 세션 탈취 XSS 취약점이 존재하는 사이트에서 Origin 권한으로 악성 스크립트를 삽입. → 이용자가 해당 페이지 방문 시 임의로 삽입한 스크립트가 실행 → 쿠키 및 세션 탈취 가능 XSS 발생 예시 클라이언트는 HTTP 형식으로 웹 서버에 리소스 요청 ─ 서버로부터의 응답(html css js)을 시각화하여 보여준다. HTML, CSS, JS와 같은 코드가 포함된 게시글을 이용자가 조회하게 되면.. 변조된 페이지를 보거나 스크립트 실행이 가능하다. Stored XSS: 악성 ..
동일 출처 정책(Same Origin Policy)
·
보안/웹·모바일
공부 사이트: dreamhack web 거의 클라이언트 사이드 공격은 SOP을 우회하기 위한 것 SOP의 Origin 구분 방법 Origin = Protocol(Scheme) + Port + Host Ex Origin: https://so106037.tistory.com/manage/newpost URL 1: http://so106037.tistory.com/manage/newpost [Scheme가 다르다.] URL 2: https://hihi.so106037.tistory.com/manage/newpost [Host가 다르다.] URL 3: https://so106037.tistory.com:9999 [Port가 다르다.] SOP는 CrossOrigin이 아닌 SameOrigin일 때만 정보를 읽을 ..