전체 글

Web Hacking/xss

[XSS game] Level 4

페이지 소스를 보자 get방식으로 전달이 된다. 따라서 url을 이용해 전달할 수 있다. 버튼을 눌렀더니 다음과 같이 url이 바뀌었다. 코드를 보자 https://xss-game.appspot.com/level4/frame?timer=('{{ timer }}'); 이런식으로 전달이 되는 것같다 url에 이렇게 적었지만 안된다. 2번 힌트를 보니 다음과 같다. 세미콜론을 decode 하면 될거 같다. 세미콜론의 decode값은 %3b이다. 따라서 ;대신 %3b를 넣으면 될거 같다. 풀렸다.

Web Hacking/lord of sqlinjection

[LOS] orc

pw가 존재하고 결과값의 pw와 입력값의 pw가 같아야 한다. addslashes( string $str ) : 큰따옴표, 작은 따옴표 앞에 역슬래시 문자를 붙여주는 함수 이 함수 때문에 앞에서 했던거 처럼 할 수가 없다. 따라서 Blind SQL Injection을 통해 pw를 알아내야 한다. [Blind SQL Injection] Blind SQL Injection은 다음과 같은 상황에서 사용 가능하다. 1. 쿼리문으로 참과 거짓 일때의 서버의 반응을 알 때 2. 원하는 결과를 얻을 데이터베이스의 이름을 알 때 이러한 상황일때 쿼리 문의 ascii, limit, substr 등의 구문을 이용한다. 1. ascii ascii는 ascii(문자) 를 하였을때 해당 문자의 아스키코드를 반환한다. 2. li..

Web Hacking/natas

[Natas] Level 6 -> Level 7 & Level 7->Level 8

Level 6 -> Level 7 들어가면 다음의 화면이 뜬다. home을 누르면 다음과 같이 뜬다 about을 누르면 다음과 같이 뜬다. 소스코드를 보자 hint가 있다. hint에는 etc/natas_webpass/natas8에 비번이 있다고 한다. home화면에서 뒤에 붙여넣었다. 그랬더니 다음과 같이 뜬다. home/etc/natas_webpass/natas8라는 파일이 없다고 한다. url을 살펴보면 page=home/etc/natas_webpass/natas8라고 되어있다. 그렇다면 page=/etc/natas_webpass/natas8로 바꾸면 원하는 페이지가 나올것이라고 유추할 수 있다. 풀렸다. 비번은 DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe Level 7->Level ..

Web Hacking/lord of sqlinjection

[LOS] goblin

들어갔더니 다음과 같이 뜬다. id가 admin이어야 풀린다. 그럼 guest를 일단 무력화해야될것이다. 먼저 no에 1을 넣어보았더니 다음과 같이 뜬다. no에 1을 넣으니 Hello guest라 뜨니깐 이 부분이 실행이 되었다는 뜻이고 그말은 no가 1일때 guest라는 뜻일것이다. 그럼 무력화 시킬려면 no에 1을 제외한 값을 넣으면 될거 같다. id='guest'&no=100 or id='admin' 이라고 썼더니 다음과 같이 나온다. admin값을 16진수로 바꿔보았다. 16진수로 바꾸면 0x61646d696e 이다. 이것을 다시 넣어보았다. id='guest'&no=100 or id='0x61646d696e' 라고 쓰면 안된다. id='guest'&no=100 or id=0x61646d696e..

Web Hacking/xss

[XSS game] Level 3

다음의 창이 뜬다. alert()창이 뜨게 하는것이 주목적인거 같다. url 바를 잘 활용하라고 한다. 뭔지 모르겠어서 힌트를 봤다. window.location 을 활용해야 될거 같다. 소스코드를 확인해보면 스크립트 부분에 다음과 같은 코드가 적혀있다. 전체적으로 보았을때 사진을 클릭하면 숫자가 전달이 되고 그 숫자에 대해서 뭔가가 일어나는거 같다. 즉 url에서 #뒤를 변형시키면 될 거같다. 근데 그전에 했던거 처럼 #뒤에 단순히 를 써서는 안될거라고 힌트가 말하고 있다. 그러면 onerror라는 error창을 띄워주는 이벤트를 사용해야 될거같다. url을 다음과 같이 작성하였다. 따옴표로 묶은 이유는 chooseTab에서 인자가 전달이 될때 문자열로 전달이 되기 때문이다. 풀렸다.

Web Hacking/natas

[Natas] Level 4-> Level 5 & Level 5->Level 6

Level 4-> Level 5 들어가면 다음의 화면이 뜬다. 접근이 허용되지 않았다고 한다. 페이지 소스를 보자 페이지 소스에서 활용할 수 있는것이 없는 거 같다 저번에 깔았던 burp suite를 활용해야 될거 같다 burp suite에서 저번에 했던거 처럼 설정을 해주고 natas5 페이지에서 새로고침을 하면 다음과 같이 뜬다. 이때 loggedin=0이라고 원래 되어있는데 이것을 loggedin=1로 바꿔준다. 그리고 forward를 누른다. 풀렸다. 비번은 aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1 Level 5->Level 6 들어가면 다음의 화면이 뜬다. secret을 집어넣으라 한다. 소스코드를 확인해보자 코드를 보니 secret변수와 폼을 통해 입력한 값이 같으면 pass..

코딩테스트/백준

[백준 2751] 수 정렬하기 2

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 시간복잡도가 O(nlogn)인 정렬은 heap sort, merge sort, quick sort가 있다. 그중에서 merge sort로 문제를 풀어보았다. Merge Sort(합병 정렬) 처음에 백준에 제출할때 pos++, left++이런식으로 코드를 작성했는데 이렇게 했더니 틀리고 pos=pos+1, left=left+1로 썼더니 맞았다. 뭔차이점이 있는지 모르겠다. (혹시 아시는..

Web Hacking/xss

[XSS game] 02

들어가면 다음과 같은 화면이 뜬다. alert()창이 나오도록 하라는 것 같다. post를 save할 수 있기 때문에 리로드 할 때마다 우리가 어찌어찌해서 alert()창을 실행 시키면 내가 reload 할 때마다 이 레벨은 풀릴 수 있다고 한다. 대충 post를 save한다는 것이 핵심인거 같다. 따라서 먼저 level 1에서 했던거 처럼 alert();라 해주었다. 아무것도 안뜬다. XSS 공격은 script 태그로 공격하는 것도 있지만 자바스크립트 링크로 공격하는 것도 있다. 따라서 자바스크립트 링크로 공격해보자 XSS라고 써주었다. 그랬더니 링크가 뜬다. 눌렀더니 풀렸다. 문제에서 말했던 것이 post 들이 save 되기 때문에 alert()창이 뜨도록 하는 링크를 post에 save하도록 하라는..

Web Hacking/lord of sqlinjection

[LOS] cobolt

들어가면 다음과 같은 화면이 뜬다. id가 admin이면 이 문제는 풀리는 거 같다. md5함수가 있는데 이 함수에 대해 찾아보았다. md5는 128비트의 해시 값을 생성하는 해시 함수이다. md5는 단방향 암호화이기 때문에 출력값에서 입력값을 복원하는 것은 절대 불가능하다. 따라서 pw의 값은 우리가 구할수 없고 그렇기 때문에 필요가 없을 것이다. pw값을 무시하기 위해서는 주석처리를 해야될 것이다. 주석 처리를 하기위해 #을 사용한다. 처음에 php뒤에 id=admin#을 했더니 문제가 풀리지 않았다. #은 %23이므로 %23으로 다시 id=admin%23을 해주었다. 그랬더니 이렇게 나온다. id에 #이 들어갔기 때문에 admin까지 id가 되지 않고 그렇기 때문에 admin만 따옴표로 묶어줘야 될..

코딩테스트/HackerRank

[HackerRank] Tree: Height of a Binary Tree

https://www.hackerrank.com/challenges/tree-height-of-a-binary-tree/problem Tree: Height of a Binary Tree | HackerRank Given a binary tree, print its height. www.hackerrank.com 트리의 높이는 노드의 가장 큰 높이가 되므로 재귀함수를 이용하여 왼쪽 서브트리와 오른쪽 서브트리의 높이를 구한다음 그중 큰 값에 +1을 한 값을 리턴하면 된다. 문제에서는 getHeight함수 코드만 짜면 되기 때문에 이 함수 코드만 작성하였다.