일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- 페니빙
- 백준
- java.lang.IllegalStateException
- 포너블
- Drive-By-Download
- pwable.kr
- 코틀린
- SQLiteConstraintException
- 애너그램 그룹
- UNIQUE constraint failed
- 클라우드가 뭐야
- cmd2
- pwnable
- cmd1
- 블록체인
- col -1 from CursorWindow
- 10814
- tlqkf
- Couldn't read row 0
- 액션바 필요없숴
- 나이순 정렬
- kotlin
- Docker
- 쏘큩
- Make sure the Cursor is initialized correctly before accessing data for it.
- pwnable.kr
- 클라우드란?
- 6566
- python
- Today
- Total
목록SECURITY/웹해킹 (8)
푸르미르
alert(1)를 실행시키면 만족하는 문제이다. 위와 같은 코드를 직접 입력하면, 다음과 같이 해킹하지 말란다.아무거나 대입해보니 필터링하는 문자열은 다음과 같다. sc, cr, ri, ip, pt, al, le, er, rt 이다. 아마 script랑 alert의 알파뱃 두 글자라도 들어가면 걸러지는 모양이다. 이를 우회할 수 있는 방법으로는 Null byte injection이 있다. XSS 공격 시도시에 자주 연계되는 인젝션이다.
문제 페이지에 들어가면 입력받는 폼이 하나 있고 check 버튼이 하나 존재한다. 이 것외에 아무것도 없기 때문에 페이지 소스를 확인해 보았다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Challenge 17 unlock=100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+1/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*..
20번 문제이다. 문제만 보았을 때 nickname, comment, captcha를 입력하고 submit을 눌러야 하는 것 같다. 위와 같이 입력하였더니 too slow라는 글자가 나오고 사라진다. script문을 확인하였다. 뒤에 ck 함수가 있는 것을 보니 ck 함수를 호출하는 것 같다. hack 값과 attackme랑 같아야 한다. 값이 adgUZr5AAZ인 것을 발견하였다. 한 번 대입해보자. 틀렸다는 문구가 나왔다. 콘솔을 이용해보자 lv5frm.id.value=1; lv5frm.cmt.value=1; lv5frm.captcha.value=lv5frm.captcha_.value; lv5frm.submit(); 위와 같은 값을 콘솔에 입력해보자. 개발자도구의 콘솔에 위와 같은 입력 후 ENTER..
16번 문제이다. php 문제이다보니 소스 코드를 확인해보자. 페이지 소스코드를 보자. 여기서 주의해야 할 부분은 부분이다. 코드를 해석해보면 mv 함수으 경우, 100, 97, 119, 115, 124를 cd에 넘겨주게 되면 별이 움직이는 스크립트이다. 아스키코드로 넘겨주는 것 같다는 생각이 들었다. 확인해보니 100: d 97: a 119: w 115: s 124: |(파이프) 이제 키보드를 이용하여 눌러보자. 문제를 풀었다.
아 귀찮아 아귀찮아 ㅇㅎㅇㅎ 소스코드 대충 해석 들어가겠따. extract함수는 배열속의 키의 값들을 변수화시키는 것이다. htmlspecialchars()함수는 html코드가 들어가는 특수문자를 일반문자로 인식되어 출력되게 하는 것이다. 이 함수에 관한 설명은 아래 블로그에서 확인하였다. https://200301.tistory.com/10 [Webhacking.kr] 24번 문제풀이 [Webhacking.kr] 24번 문제풀이 오늘은 "Webhacking" 24번 문제를 풀었다. 밖의 날씨도 비가 오고 늦잠도 자버려서 점수 배점이 낮은 문제를 풀었다. 24번 문제에 들어가면 아래의 화면처럼 'client ip'와 'agen 200301.tistory.com 쿠키를 추가했다. 했다ㅣ
source를 봐보자. id가 admin이면 풀리는 것 같다. 그런데 단순히 admin을 인코딩하여 id=로 입력하여 넣으면 되지 않을 것이다. 왜냐하면 preg_match함수를 통해 필터링 하고 있기 때문에 아마 화면에 no가 뜰 것이다. admin을 인코딩을 두번한 값을 보내면 자동으로 디코딩되어 풀릴것이다. 왜냐하면 웹서버와 브라우저 간 통신할 때 자동으로 브라우저는 데이터를 인코딩하여 보내고 php는 지가 디코딩하기 때문이다. %61%64%6D%69%6E (admin을 한번 인코딩한 값)을 한번 더 인코딩하여 %2561%2564%256D%2569%256E값을 넣어보도록 하겠다. 인코딩하는 방법은 구글링하여 알아냈다. 풀었다. 난 이전에 한 번 풀어본 문제라 already solved가 나온 것이다..
옛날에 풀었는데 기억이 안난다. 다시 풀어보자:) view source 눌러 소스코드를 보자 다 필요없고 난 쿠키가 궁금하다. 그러므로 이것만 보겠다. 쿠키값이 4보다는 같거나 크면 안되고 3보다는 커야한다라. f12를 눌러 쿠키값을 확인해보자. user_lv값이 1로 되어있는데 이 쿠키값을 3.5로 변경해보자. 그러면 난 이미 풀어서 already solved라고 나오는데, 풀엇음 solved라는 alert가 나올것이다. https://webhacking.kr/challenge/web-01/
웹은 크게 프레젠테이션티어, 로직티어, 데이터 티어라는 3계층 구조로 이루어져있다. 클라이언트 영역과 서버영역으로 웹을 나누게 되면 프레젠테이션티어는 클라이언트 영역에 속하며, 다른 티어들은 서버영역에 속한다. 내가 웹브라우저를 통해 구글로 접속했을 때 HTTP요청이 전송되어 인터넷을 통해 구글 서버영역으로 전달된다. HTTP HTTP는 웹을 구현하기 위한 네트워크 프로토콜이다. 이때 프로토콜은 송신호스트와 수신호스트 즉 클라이언트와 서버가 서로 통신하기 위한 일종의 규약이다. HTTP통신은 요청과 응답 두가지로 구성된다. 클라이언트 영역에서 서버영역으로 HTTP요청을 전송하고 웹서버는 해당요청을 처리한 후 HTTP응답을 통해 그 결과를 반환한다. HTTP요청 메세지 요청메세지의 구성은 이런식이다. 메소..