일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹개발
- 디미고특별전형
- 우분투
- 특별전형
- 일상
- 웹프로그래밍과
- 디지털컨텐츠과
- 해킹방어과
- 학생
- 머신러닝
- TensorFlow
- WebHacking
- 코로나19
- 중3
- coursera
- 인공지능
- 디미고
- Flutter
- pwnable.kr
- 대나무숲
- 플러터
- 등교개학
- 워게임
- graphql
- 풀스택
- apollo
- 이비즈니스과
- 딥러닝
- 시스템해킹
- 디미고입학
- Today
- Total
목록WebHacking (5)
꿈이 너무 많은 한 대학생의 공간

오늘은 다시 Webhacking 문제로 돌아왔습니다. 딱히 Reversing.kr 2번 문제의 Serial 개념이 이해가 안가서 그런건 아니구요... 아무튼 소스를 다시 봅시다. php로 쓰여져 있네요. 저는 php를 공부를 안해서 이런거 풀때마다 문서를 찾아보면서 합니다. 핵심 코드를 살펴보면, $pat 변수 안에 php 정규식을 담습니다. 그 후 preg_match 함수에서 val 파라미터가 $pat 정규식 일치하는지 아닌지를 판단합니다. php 정규식을 해석해보겠습니다. php에서 정규식은 / 문자로 감싸져야 합니다. [1-3] 은 1부터 3 범위 안에 있는 숫자가 들어가야 한다는 뜻입니다. 그러면 [1-3] 은 1, 2, 3 셋 중에 하나가 들어가면 되겠네요. 뒷 부분도 마찬가지입니다. [a-f]..

전체적인 분위기는 육상경기 트랙같은 느낌입니다. 회색 칸 왼쪽의 O 표시가 저 인것 같고, 노란색 골라인으로 들어가면 될 것 같네요. O 표시의 코드를 분석해보니 클릭하면 발생하는 이벤트가 있네요. a태그(O표시)의 왼쪽 좌표를 클릭할때마다 1씩 증가시키는 내용입니다. 클릭해보면 매우 조금씩 움직여서 하나하나 클릭하기도 쉽지 않습니다. 그럼 크롬 개발자 도구를 사용해 이를 수정해 봅시다. onclick="(코드)" 코드 부분을 더블클릭하면 수정이 가능합니다. this.style.left=parseInt(this.style.left, 10) + 1 + 'px'; ~~~ 부분에서 1 부분이 아마도 증가시키는 부분 같습니다. 그러면 이를 약 100 정도로 바꿔봅시다. 그리고 a태그 위치값을 아예 바꿔서 더 빠..

이번 문제는 쉬운 편입니다. 소스를 확인해보겠습니다. 첫 번째 코드는 user 쿠키값이 없을 시의 조건문입니다. user 쿠키값이 없을 시 "guest", "123qwe" 를 각각 base64 인코딩을 20번 반복하고 1, 2, 3, 4, 5, 6, 7, 8 숫자를 각각 !, @, $, ^, &, *, (, ) 로 치환하고, 각각 user, password 쿠키값으로 저장하는 코드입니다. 두 번째 코드는 user 와 password 쿠키값을 가져오고, 위와 같이 특수문자를 숫자로 치환한 뒤 base64를 20번 디코딩 한 후 나온 결과값이 각각 admin, nimda 일 시 해결되는 문제입니다. 알고리즘은 간단하니 코드를 작성해보도록 할게요. import base64 text = "admin" for i..

제가 SQL 공격에 약해서 앞 문제를 건너뛰었습니다. 조금 더 공부를 하고 포스팅하겠습니다... 이번 문제는 암호와 관련되어 있습니다. 새로고침을 해보니 회색 칸 내부는 계속 바뀌는거 보니 일정한 값은 아닌가 보네요. password 내부에 값을 전송하면 될 것 같습니다. 소스를 확인해보면 대충 알고리즘은 10000000 부터 99999999 의 수를 랜덤으로 뽑고 그 뒤에 salt_for_you 문자열을 붙여 암호화 전 문장을 만든 후 500번 해쉬화를 반복해 패스워드로 지정하는 것 같습니다. 생각보다 단순한 알고리즘이니 파이썬으로 쉽게 복호화 알고리즘을 만들 수 있습니다. import hashlib for i in range(10000000, 100000000): password = str(i) + ..

오늘부터 정보보안을 본격적으로 공부하려고 합니다. 일단 Webhacking 워게임 사이트의 문제를 풀고 분석하면서 기본기를 다지려 합니다. 문제 중 제일 쉬운 난이도의 1번 문제는 php 문법을 분석할 능력만 있으면 쉽게 풀 수 있는 문제입니다. 검정 배경에 level : 1 이라는 텍스트와 소스를 볼 수 있는 버튼이 있습니다. 개인적으로 웹해킹 문제를 풀려면 기본적인 html, css, js, php 까지는 공부하셔야 합니다. 쉬운 난이도라면 단순한 조건문만 확인해도 풀 수 있지만, 심화적인 문제는 그것만으로는 못 푸는 문제가 많습니다. (물론 심화적인 문제에선 php 문제가 거의 없지만요) 소스를 확인해보면 웹 쿠기 값 중 user_lv 값을 확인해 문제의 해결 유무를 판단하는 것 같습니다. 2번째 ..