일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 보안
- 신경망
- 파이썬신경망
- 신경망 학습
- FTZlevel10
- C언어알고리즘
- 파이썬
- 인공지능
- 신경망파이썬
- 신경망구현
- 알고리즘
- 버퍼오버플로우
- 밑바닥부터시작하는딥러닝
- 활성화함수파이썬
- 달고나bof
- BOJ
- 백준
- 딥러닝파이썬
- 8086CPU레지스터
- 백준알고리즘
- c언어
- 항등함수
- C알고리즘
- C언어 알고리즘
- 정보보안
- 머신러닝
- 소프트맥스함수
- 딥러닝
- BOF
- 스트림암호
- Today
- Total
목록분류 전체보기 (235)
HeeJ's

LEVEL 1 이기 때문에 굉장히 간단하게 풀 수 있는 문제라고 생각한다. 폼에 넣은 값이 어떤 방식으로 전달되는지 보기 위해 임의의 값을 넣어보았다. url에서 get 방식으로 값이 들어간다. 그러면 그냥 폼에다가 alert 문을 넣어주면 alert창을 띄워줄 수 있을 것이다. script 안에 alert를 넣어서 값을 입력해주었다. 성공!

First name에 hello, Last name에 world라는 값을 넣어보았다. 넣어준 값이 그대로 출력되었다. 위의 URL을 확인해보아도 그냥 값이 그대로 전달되는 것을 확인할 수 있다. 그렇다면 위의 값을 넣는 폼에 스크립트를 넣어 페이지의 쿠키 값을 가져와보고, alert 창을 띄워볼 수 있을 것이다. First name: Last name: 성공 XSS - Reflected (POST) 문제의 경우는 스크립트가 전해지는 방식이 GET 방식이냐 POST 방식이냐 정도의 문제 차이가 있다고 볼 수 있다. 그렇기 때문에 똑같은 값을 넣어주어도 같은 결과가 출력되는 것을 확인할 수 있다.

[low] bee-box는 firefox를 기본 브라우저로 사용하는데, firefox는 .php 파일을 지원하지 않기 때문에 beebox 안에 있는 디렉터리에서 .php 파일을 확인할 수 있다. .php 파일은 /var/www/bWAPP에서 확인할 수 있다. 이번 문제와 관련된 php 파일의 이름은 ba_forgotten.php인 것 같다. cat 명령어로 ba_forgotten.php 파일을 확인해주었다. 함수를 한 번 살펴보았다. 실제 데이터 베이스에 들어있는 이메일이 검색된다는 것을 확인할 수 있다. 이메일이 검색되면, secret이라는 값이 그대로 출력되는 것을 확인할 수 있다. 서버에 저장된 이메일을 사용하는 문제이기 때문에 사이트에서 이메일을 만들어 주었다. Create User에 들어가 폼을..

필터링되는 문자열을 보면 싱글쿼터, 더블쿼터가 필터링된다는 것을 알 수 있다. 그렇다면 문자열을 인코딩해서 넣어주어야 할 것 같다. 입력되는 쿼리문이다. GET방식으로 입력해줘야할 값은 no이다. id가 admin일 때 goblin 문제를 solve할 수 있게 된다. 하지만 쿼리문을 보면 이미 id가 guest로 이미 들어가있다. 그렇다면 id='guest' and no={$_GET[no]} 구문을 false로 만들어주고, and를 이용해 뒤에 id=admin을 넣어주어 문제를 해결할 수 있을 것이다. 그렇다면 GET방식으로 ?no=0 and id='admin' 을 넣어주면 해결할 수 있을것이다. 하지만 싱글쿼터가 필터링 되는 것을 위해서 확인해주었기 때문에 'admin'을 char()함수로 싱글쿼터를 ..

sourceforge.net/projects/bwapp/files/bee-box/ bWAPP - Browse /bee-box at SourceForge.net × sourceforge.net 위의 사이트에 들어가 .7z 파일을 다운로드 받는다. 그리고 압축을 풀어주면 .vmx 파일을 얻을 수 있다. 이 파일을 vmware에서 열어준다. 실행시켜주면 이러한 창을 볼 수 있다. 기본 언어가 벨기에로 되어있기 때문에 이를 한국어로 바꿔주어야 한다. [System] - [Preferences] - [Keyboard] [Layouts] - [Add]에 들어가 Layouts에서 Korea, Republic of 를 찾아준다. Add를 누르고 Belgium은 remove해주어도 된다. 한국어로 키보드 설정을 해주어도..

소스코드를 우선 살펴보았다. 필터링 되는 내용 확인 전송되는 쿼리문의 형태 확인 문제 해결 방법 확인 id가 admin이어야 이 문제가 solve되며, get으로 입력받는다. 굉장히 간단한 문제인 것 같다. get 방식으로 id 값에 admin을 넣어주고 뒷 부분을 주석처리하면 된다. 이 문제 또한 #가 인코딩되지 않기 때문에 직접 값을 %23으로 바꿔주면 문제를 해결할 수 있다.

코드를 살펴보면 get 방식으로 입력받은 id나 pw 값에서 preg_match를 이용해 위의 문자열들을 검색해, 그 문자열들이 포함된다면 exit()를 실행하게 된다. ==> 필터링 된다. 필터링되는 문자열들을 확인해주었고, 전달되는 쿼리문의 형식은 이렇다. id로 입력 받은 값을 or를 이용해 true로 만들어주고, 뒤의 pw 부분을 주석처리 해주면 문제를 해결해 줄 수 있을 것이다. get방식으로 ?id=' or 1=1# 을 넣어주어 id의 싱글 쿼터를 닫아주고, or문 뒤에 true인 문장을 붙이고, #를 통해 뒤에 주석처리를 해 주었다. 엔터를 입력한 후 url을 보니 #가 전달될 때 인코딩되지 않은 것을 확인할 수 있었다. 그래서 값을 직접 바꿔주었다.

Page 버튼을 눌러보았다. page 수는 get방식으로 들어가며, 문제화면 아래에 해시함수처럼 보이는 것들이 계속 생성되는 것을 확인할 수 있었다. hask identifier로 확인한 결과, SHA 512인 것을 확인할 수 있었다. 위의 값들을 복호화해서 flag를 얻어낼 수 있을 것이라 예상했지만, 가능할 리 없었다. 페이지 숫자 중 비밀이 있다는 것은 특정 page에 들어가게 된다면 flag를 얻을 수 있겠다는 생각을 했다. 일일이 찾아볼 수 없으니 파이썬 스크립트를 이용해 찾아주려고 한다. 이제 get방식으로 들어가는 1225번째 페이지를 확인해주었다.