분류 전체보기

코딩테스트/HackerRank

[HackerRank] Binary Search Tree : Insertion

https://www.hackerrank.com/challenges/binary-search-tree-insertion/problem Binary Search Tree : Insertion | HackerRank Given a number, insert it into it's position in a binary search tree. www.hackerrank.com 이진 탐색 트리에서 노드를 하나씩 삽입할때마다 트리를 재구성해야한다. 이진 탐색 트리의 조건은 다음과 같다. 1. 트리의 모든 원소는 중복없이 유일 2. 루트노드는 왼쪽 서브트리보다 값이 커야하고 오른쪽 서브트리보다 값이 작아야한다. 3. 왼쪽 서브트리, 오른쪽 서브트리 모두 이진 탐색 트리 따라서 먼저 노드를 삽입할때 트리가 비어있는지를..

Web Hacking/natas

[Natas] Level 2->Level 3 & Level 3->Level 4

Level 2->Level 3 들어가면 다음과 같은 화면이 나온다. 페이지 소스를 확인해보았다. 아무런 정보를 얻을 수 없었다. 심지어 구글에서도 찾을수 없다고 되어있다. 저번에 했던거 처럼 url 끝에 /files를 넣어 접속해 보았더니 페이지가 없다. 문제는 구글에서도 찾을수 없다고 했지만 구글은 만능이기 때문에 구글에 검색해 보았다. robots.txt라는 파일이 있는데 이는 검색 엔진 크롤러에서 사이트에 요청할 수 있거나 요청할 수 없는 페이지 또는 파일을 크롤러에 지시하는 파일이라고 한다. 따라서 구글에서 찾을수 없다는것이 robots.txt 파일을 의미한다. 즉, robots.txt에는 Disallow라고 되어있는 디렉토리가 있음을 확인하였고 이 디렉토리로 접근을 해보자 디렉토리에 접속했더니 ..

Web Hacking/xss

[XSS game] 01

들어가면 다음과 같은 화면이 나온다. alert 창을 화면에 띄우는 것이 mission이다. script를 입력했더니 url에 query=script가 뜬것을 볼수 있다. XSS 공격은 태그를 씀으로써 공격할 수 있다. alert()창이 나오게 하는 방법은 alert();를 써주면 search에 써주면 될 것이다. 풀렸다.

Web Hacking/xss

XSS 공격

XSS 공격이란? XSS(Cross-site Scripting): 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용 자가 사이트에 스크립트를 넣는 기법. 공격 성공 시, 사이트의 사용자는 삽입된 코드를 실행하게 됨. 자바스크립트를 사용하여 공격하는 경우가 많음. HTML을 사용하는 것이므로 Text-Only 게시판 이나 BBCode를 이용하는 위키위키 등에서는 발생하는 경우는 없음. {{{#!html HTML}}}을 이용해서 HTML 태그를 사용할 수 있으므로 취약점이 있을 수 있음. 스크립트 태그 스크립트 태그로 자바스크립트 실행 예를 들어, $(‘.xss’).parents().ep(1).find(‘a’).eq(1).click();$(‘[data-action-retweet]’).cl..

Web Hacking/lord of sqlinjection

[LOS] gremlin

들어가보면 다음과 같은 화면이 나온다. id값이 존재하면 gremlin은 풀릴것이라고 예상이 된다. $_GET[id]와 $_GET[pw]를 통해서 id와 pw를 값을 받아올것인데 이때 query 문이 id="" and pw=""이므로 id와 pw값이 둘다 존재해야 될것이다. 따라서 sql의 가장 기본 구문 '1' or '1'='1'을 사용한다. id값에는 아무거나 들어가면 참이 나온다. 근데 pw에는 아무거나 들어가면 참이 나오지 않는다. 따라서 pw = '1' or '1'='1' 이라고 작성을 하면 pw은 1이거나 1=1라는 것이다. 근데 1=1은 무조건 참이 되기 때문에 pw은 참이 될수 밖에 없다. .php다음에 ?를 쓴다음 id=1&pw=1'or'1'='1이라고 작성하였다.(작은 따음표는 url인..

Web Hacking/lord of sqlinjection

SQL Injection

SQL Injection이란? SQL Injection은 1998 년에 phrack에 기법이 소개된 이후로 언제나 owasp 상위권을 차지하고 있으며 수많은 웹사이트에서 수많은 개인정보를 유출하는데 사용된, 사용되고있는 기법 SQL Injection을 쓰는 이유 SQL Injection 의 가장 큰 특징은 데이터베이스를 공격한다는 것이다. 여타의 해킹기법은 서버사이드 언어가 작동하는 서버 혹은 서버에서 데이터를 받는 클라이언트를 공격하는 기법이다. 그러나 데이터베이스는 서버사이드 언어와는 구분되어진 한개의 프로그램이다. 데이터베이스 자체에서 SQL Injection 을 방어하는것은 어렵고 비효율적인 작업이기에 개발자는 데이터베이스에 가해지는 공격을 서버사이드에서 방어해야한다. 이것이 SQL Injecti..

코딩테스트/백준

[백준 2750] 수 정렬하기

https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 시간 복잡도가 O(n²)인 정렬 알고리즘으로 풀 수 있다. 예를 들면 삽입 정렬, 버블 정렬 등이 있다. 1. 버블 정렬 버블정렬은 이웃하는것과 하나하나씩 비교를 하여 정렬을 한다. 따라서 하나하나씩 비교를 할때 모두다 오름차순이면 더이상 진행을 하지 않아도 된다. 따라서, i가 n-1부터 시작을하여 i의 값을 1씩 줄어들게 만들고 i이하의 범위 내에서 가장 큰 수는 배열에서 i의 위치에 오도록 만든다..

Web Hacking/natas

[Natas] Level 0 & Level 0 -> Level 1 & Level 1->Level 2

더보기 https://overthewire.org/wargames/natas/ Level 0 사이트에 접속하면 다음과 같은 화면이 나온다. 페이지의 코드를 확인해보자 natas1의 비밀번호가 gtVrDuiDfck831PqWsLEZy5gyDz1clto 임을 알수있다. Level 0 -> Level 1 사이트에 접속하면 다음과 같은 화면이 나온다. 오른쪽 마우스 버튼을 누를수 없기 때문에 페이지 소스를 확인하기 위해 Ctrl + Shift + C를 누른다. natas 2의 비밀번호가 ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi 이다. Level 1 -> Level 2 들어가면 다음과 같이 화면이 뜬다. 페이지 소스를 봤더니 다음과 같다 img 파일이 있는것을 확인 할 수 있다. 이 파일을 확인..

System Hacking

babyROP

먼저 파일을 실행해 보았다 보호기법을 확인해보았다. NX Bit 가 걸려있다. IDA로 파일을 까봤다. read를 통해 buf를 입력을 받고 출력을 한다. 오버플로우를 확인해보자 breakpoint를 main함수의 첫번째와 read함수 전으로 지정해주었다. dummy값을 72로 설정하면 될것 같다. libc leak을 해야한다. libc leak을 하기 위해 read의 plt와 got영역의 주소가 필요하다. 또한, IDA를 볼때 옆에 메뉴(?)에서 puts함수가 있었다. 따라서 puts함수의 plt를 이용한다. 그리고 gadget을 구해야한다. 코드는 dummy값을 72개 채운다음 gadget + read_got + puts_plt순으로 전달을 한다. 그러면 read함수의 주소를 구할 수 있다. 그런다음..

코딩테스트/HackerRank

[HackerRank] Tree: Level Order Traversal

https://www.hackerrank.com/challenges/tree-level-order-traversal/problem Tree: Level Order Traversal | HackerRank Level order traversal of a binary tree. www.hackerrank.com 레벨 순회는 큐를 이용한다. 큐의 FIFO(First In First Out)을 이용하여 큐에 root를 저장하고 그다음 꺼낸다음 root의 자식을 큐에 저장한다. 다시 큐에서 노드를 꺼낸 다음 그 노드의 자식을 저장하고 이를 꺼낸 노드가 null이 아닐때까지 계속 시행하면 된다. 큐를 사용하기 위해 struct node * 타입의 que 배열을 사용한다. 큐를 사용하기 위해 front와 rear 변..

ankisile
'분류 전체보기' 카테고리의 글 목록 (44 Page)