일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- 스트림암호
- 활성화함수파이썬
- 신경망 학습
- 신경망파이썬
- 소프트맥스함수
- 달고나bof
- BOF
- 정보보안
- BOJ
- 딥러닝파이썬
- 백준알고리즘
- FTZlevel10
- 버퍼오버플로우
- 신경망구현
- 파이썬신경망
- 딥러닝
- C언어알고리즘
- 밑바닥부터시작하는딥러닝
- c언어
- 알고리즘
- 머신러닝
- C언어 알고리즘
- 신경망
- 항등함수
- 백준
- 8086CPU레지스터
- 인공지능
- C알고리즘
- 보안
- Today
- Total
목록<CTF> (95)
HeeJ's
필터링되는 문자열을 보면 싱글쿼터, 더블쿼터가 필터링된다는 것을 알 수 있다. 그렇다면 문자열을 인코딩해서 넣어주어야 할 것 같다. 입력되는 쿼리문이다. 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번째 페이지를 확인해주었다.
아래의 button을 클릭해도 아무 일도 일어나지 않는다. 소스코드를 확인해주었다. 매우 간단한 코드를 확인할 수 있었다. 5번째 줄에서, button을 클릭했을 때 나오는 value를 flag로 바꿔주면 flag를 얻을 수 있지 않을까 해서 개발자 도구를 이용해 코드를 수정해주었다. 그리고 버튼을 다시 클릭해주면 flag를 얻을 수 있다.
문제 화면 auth 버튼을 눌러보았더니 Access_Denied 라는 경고 창이 떴다. 전체 소스코드 쿼리의 값이 2가 나오면 문제가 해결된다. 문제를 감싸는 괄호의 개수는 랜덤으로 변한다. go의 값은 GET방식으로 받는다. 필터링되는 내용을 살펴보면 숫자 2 또한 필터링된다는 것을 확인 union과 select가 필터링되지 않기때문에 이 두가지를 이용해 쿼리문을 작성해보았다. nice try!라는 값이 떴는데, 이는 괄호의 개수때문에 일어난 문제이며, 오답이 아니다. 1~5까지의 값을 랜덤하게 받기 때문에 대략 5번 정도 새로고침을 해준다면 문제를 풀 수 있다.
문제 화면 리눅스에서 사용하는 화면이라는 것을 알 수 있다. 문제의 url을 확인해보니 get 방식으로 파일 명을 받아와 회색 칸에 출력해주는 것 같다. flag.php 파일을 열어보기 위해 url을 약간 변조해보았다. FLAG는 코드에 있다는 힌트를 얻을 수 있었다. 실제 flag.php의 소스코드를 확인해봐야 이 문제를 해결할 수 있을 것 같다. 이 문제를 해결하기 위해서는 PHP Wrapper를 사용해야 한다. php://filter의 warpper를 사용하는 방법은 php://filter/convert.base64-encode/resource= url에 입력하는 것이다. 최종 목표는 php의 소스를 알고 싶은 것이기 때문에, url?file=php://filter/convert.base64-enc..