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

A2. Broken AUthentication - Logout Management 문제를 풀어볼 것이다. 현재, 메인 화면에서 bee/bug로 로그인 된 상태입니다. 이 상태에서 here을 눌러 logout을 해줍니다. sure을 묻는 메시지에 OK를 눌러주어 로그아웃을 해줍니다. 그러자 다시 main 화면의 Login 창으로 넘어온 것을 확인할 수 있다. 하지만 이 화면에서 뒤로가기를 누른다면, 다시 아까의 login 상태로 넘어온 것을 확인할 수 있다. 결과 : 이 사이트는 세션 관리 취약점 중, 세션이 자동 로그아웃되지 않고 유지되는 경우라고 볼 수 있다. 이는 로그인 세션이 아직 살아있어 생기는 문제로, 로그아웃 시 세션에 대한 처리가 되지 않아 생기는 문제이다. 이와 비슷한 것으로는 공공 장소의..

필터링 되는 preg_match 구문을 보면, 이 문제에서는 '공백'이 필터링된다는 것을 알 수 있다. or나 and를 사용할 때는 앞 뒤에 공백이 꼭 들어가야하므로, 이와 관련된 문제라고 볼 수 있다. 하지만 이 or와 and는 연산자로 대신할 수 있다. or -> || and -> && 이 쿼리 문에서 or를 대신해 ||를 사용해준다면 공백이 없이도 이 문제를 해결할 수 있다. 이렇게 쿼리문을 전송해 준다면 문제를 해결할 수 있다.

이 orc 문제는 blindSQL 문제로, 전송한 쿼리의 리턴 값이 true인지 false인지의 반응을 통해 pw의 값을 알아보는 문제이다 이 문제를 풀기 위해 자동화 스크립트를 파이썬으로 작성해주었다. import requests #los orc url = "Lord of SQL orc URL" headers = {"Cookie":"PHPSESSID=Your PHPSESSID"} #패스워드 길이 구하기 for i in range(50): query="pw='||id='admin' and length(pw)={}%23".format(i) r = requests.get(url+query, headers=headers) if "Hello admin" in r.text: length = i break #패스워..

소스 코드를 보아도 별 다른 함수도 없는 것을 보아 notice 게시판에 직접 글을 써봐야 할 것 같다. 그래서 main으로 가서 notice 게시판을 보았더니 글을 작성할 수 있는 버튼이 없었다. 비교해보기 위해 다른 게시판으로 가보았다. free 게시판인데 이 곳에서는 write 버튼이 있었다. 일단 글을 쓰기 위해 들어가 보았다. URL에 free/write 라고 적혀있었다. 이 free 부분을 notice로 바꾼다면 notice 게시판에 글을 작성할 수 있을 것 같다. 이렇게 하고 아무렇게나 글을 입력해 주었더니 Authkey 를 얻을 수 있었다.

소스코드를 바로 살펴보았다. id와 pw가 같으면 can't join이라는 alert 창과 함께 문제를 해결할 수 없다. 그래서 아무 다른 값을 넣어 보았더니 아무 일도 일어나지 않았다. hint 부분에서 id와 pw가 같아야 한다는 것을 보니, 스크립트를 우회하는 방식을 사용해야 할 것 같다. 개발자 도구에서 콘솔을 이용해 else문에 있는 document.web02.submit();를 실행시켜 준다면? 우선 실행시키기 전, Hint에서 보이는 것과 같이 id와 pw 폼에 같은 값을 아무거나 입력해준다. join을 누르지 않고, 그대로 개발자 도구의 콘솔에 들어간다. 그리고 아까 else문에 있던 명령어를 입력해보면 AuthKey값을 얻게 된다.

소스코드를 살펴보면 str을 받아와서 여러 문자열을 치환해주는 것 같다. Mid()함수는 처음 보았는데, mid() 함수는 문자열에서 원하는 길이만큼 빼오는 함수라고 한다. string a = "123456789"; Mid(a,1,3) // 123 Mid(a,2,5) // 2345 이렇게 사용될 수 있다. 뭔가 문자열을 대체하는 replace와 추출하는 mid를 잘 읽어보고 활용해 결과적으로 admin이라는 값을 얻으면 되는 것 같다. mid()함수를 먼저 보면 2의 값과 4~6의 값이 사용 되는 것을 알 수 있다. __ __ __ __ __ __ 1 2 3 4 5 6 ami 라는 값을 넣어주면 a가 aad로 대체되고 i가 in으로 대체되면서 a a d m i n 이라는 값을 갖게 된다. Mid()함수에..

Image n 버튼을 누르면 창이 넘어가면서 Image1, Image2, Image3을 보여준다. 이 이미지들을 이용해서 alert 문을 띄워줄 수 있을 것 같다. html 문을 살펴보면 어느 부분에 코드를 삽입해주어야 할지 알 수 있을 것이다. 이 부분에 onclick 시 chooseTab이 아닌 alert를 실행시켜주면 Image n 탭을 눌렀을 때 alert가 실행될 수 있도록 할 수 있을 것이다. 개발자 도구를 이용해 tab onclick 명령이 있는 부분을 찾아주었다. 그리고 alert 명령을 뒤에 덧붙여주었다. 그리고 Image 2 탭을 눌러주면 성공!

메세지 창(?)처럼 생긴 부분이 있었는데, 이 부분에 값을 넣어주면 메시지를 띄워준다. 그래서 스크립트 창을 이용해 값을 바로 넣어보았다. 아래 값을 넣어주니 필터링이 되는건지 NULL 값(?)이 전달되는 것을 확인할 수 있었다. 그렇다면 이 문제를 풀기 위해서는 script를 우회?하여 값을 전달해주어야 할 것이다. script 우회 태그라고 검색해보았더니, onerror라는 태그를 찾을 수 있었다. onerror 태그는 이미지가 경로에 없을 때, 대체할 이미지를 지정하는 속성이라고 한다. 대체할 이미지 대신에 명령을 넣어주어도 실행이 될 것이라고 예상하고, img 태그와 onerror를 함께 사용해보았다. 위처럼 img 태그에 경로를 지정해주지 않고, onerror 조건에 alert 문을 넣어 주었다..