본문 바로가기

전체 글

(76)
[Webhacking.kr] old-07번 문제 풀이 7번 문제는 auth 버튼 하나가 전부이다. view source를 눌러보자 php 코드가 쫘아악 나온다. 간단하게 정리하면 get 방식으로 val 파라미터를 전달받는다 1~5 사이의 정수를 랜덤으로 뽑아, 괄호의 개수를 정해 SQL select 문을 실행한다. SQL query의 결과가 2면 문제가 풀린다. 파라미터를 전달받으며, SQL select문을 실행하고, query결과의 조작이 필요하다... SQL Injection 문제임이 틀림없다. 하지만 주의해야 할 점이 바로 이 구문에 있다. preg match로 몇가지 문자들을 필터링 해 두었는데, Injection을 하게 어렵게 하는 항목은 아래와 같다. 2 : 결과값을 2로 만들어야 하는데, 2 자체를 필터링 해 두었다. -, +, /, * : 사..
[Webhacking.kr] old-04번 문제 풀이 4번 문제는 무언가 hash 비슷하게 생긴 문자열 하나를 주고 password 입력 공간을 준다. view source를 읽어보자 아... 코드를 읽자마자 드는 불길한 예감. 그렇다. 이 문제는 어려운 문제가 아닌 귀찮은 문제.... 문제를 대충 정리해보면 화면에 보이는 sha1 hash값이 원래 어떤 값인지 맞추라는 것이다. 다만 hash는 매번 랜덤하게 바뀐다... 문제의 의도는 rainbow table을 만들어 풀라는 것으로 보인다. 문제의 의도를 파악한 이상 지체할 필요는 없다. rainbow table을 만드는 간단한 코드를 github에 올려두었다. 특징이 있다면 아래와 같다. multiprocessing을 통해 총 9개의 process를 동시에 실행하여 효율을 뽑아내려 노력한 코드 각 pro..
[Webhacking.kr] old-06번 문제 풀이 6번 문제도 뭐 입력할 수 있는 공간이 있거나 하진 않았다. view source를 눌러보니... php 코드가 나왔다. 그 중에서도 가장 중요한건 바로 아래쪽에 있는 코드다. 간단히 정리하면 문자열 치환과정과, 20번의 base64 디코딩을 통해 admin, nimda가 되는 값을 찾아내라는 문제이다. 조금 특이한것이 있다면, 찾아낸 값을 쿠키에 넣어야 한다는 점이다. 사실 문제자체는 엄청 쉽다. 인코딩 과정도 php 코드로 다 공개해 두었기 때문에, 문자열 치환과정과 20번의 base64 디코딩을 거꾸로 진행하면 된다. 즉 admin과 nimda라는 문자열을 각각 20번씩 base64 인코딩 시키고, php 코드에서 치환하는 문자를 다시 거꾸로 역 치환 해주면 된다. python script로 짜면 ..
[Webhacking.kr] old-05 풀이 5번문제의 경우 상당히 심플한 구성으로 이루어져 있다. Login을 해보기 이전에 Join을 시도해보고자 버튼을 눌렀더니... Access Denied 란다. 그래서 코드를 한번 살펴보았더니... onclick 이벤트 핸들러에 no() 함수가 걸려있었고, script 어디를 봐도 join으로 이동할 수 있는 부분은 존재하지 않았다. 그래서 우선 login 페이지로 이동해보기로 했다. login 페이지는 단순했다. 그저 id, pw 넣으면 맞는지 틀린지 정도 구별해주는 역할을 하는듯 싶었다. 다만 한가지 확실한건, 여기도 조금 공격을 시도해보았지만 전부 막혀있었다. 즉 login 페이지에 공격하는 것이 아닌 join페이지를 공격하는 것이 이 문제의 핵심임을 알 수 있었다. 하지만 join 관련 페이지가 어..
[Webhacking.kr] old-03 풀이 old 3번 문제의 경우 무슨 퍼즐같은 미니게임으로 시작한다. 규칙은 간단하다. 가로 세로에 적혀있는 숫자의 합은 그 행 또는 열에 색이 칠해진 칸의 갯수이다. 숫자가 합쳐져 있으면 색칠된 칸이 연속되어 있다는 의미이다. 숫자가 각각 따로 써져있으면 색칠된 칸이 다 따로 있다는 의미이다. (ex. 3 이라고 써져있다면 색칠된 칸 3개가 붙어있고, 1 1 1 이렇게 써져있다면 색칠된 칸 3개가 다 떨어져 있다) 위에 작성한 규칙에 의거하여 문제를 풀면 요런형태가 나오고, solved 버튼을 누르게 되면....끝...? (해치웠나..?) 은 기대도 안했다. 여기가 메인이구만... 성공한 사람의 기록을 남기기 위해 이름을 남겨달라고 한다. 우선 tomato로 남겨보았다. 이름을 남기면 내가 적은 이름, 그리고..
[T0M4TO] Git ID/PW(Access-token) 매번 입력에서 벗어나기 이건 분명 나만 고통받았던 것이 아닐거다. 모두들 순서는 나와 동일할 것 같다. git status git add . git commit -m "주저리주저리" git push [repo alias] [branch] ID/PW 또는 ID/Access-token 입력 이 과정을 Github나 Gitlab, Bitbucket 같은 원격 repository에 코드를 push 할 때 마다 반복했을 것이다. 특히나 5번 과정은 매우 귀찮다. 매번 인증정보를 입력해야 하니까. 그래서 ID/PW 또는 ID/Access-token 입력 없이 push 할 수 있는 방법을 정리해 보았다. 방법은 크게 두가지가 있다. - Credential 정보를 반영구 저장 하는 방식- git config --unset credential..
GITHUB Access Token을 이용하여 push 하기 나는 보통 git을 통해 github에 push를 할때, ID/PW 방식을 이용한 Basic authentication 방식을 사용하고 있었다. (보안상 매우 좋지 않습니다. 귀찮아서 계속 미루고 있던 상황) 오늘도 역시나 Basic authentication 방식으로 보안은 개나줘버려! 이러면서 push를 했고, GITHUB로 부터 한통의 메일을 받게된다. password로 repository에 접근했다. (어떤 repository인지, 접근한 tool은 무엇인지.. 등은 마스킹) 그리고 가장 중요한 것. Basic authentication 방식은 곧 동작하지 않을것이다. (F/O 예고...) 그렇다. 미루고 미루던 작업을 해야할 수 밖에 없게 되었다. GITHUB Access token 만들기! 방..
[Webhacking.kr] old-02번 문제 풀이 2번문제가 예전에는 홍길동 페이지였던것으로 기억하는데... 사이트 이전을 하며 문제가 조금 변경된 듯 하다. 우선 2번문제로 들어가면 IP가 로깅되고 있다는 말을 제외하고는 따로 뭐 풀이를 위한 입력공간이나 기능은 없다. 혹시 뭐가 숨겨져 있나 싶어 코드를 열어보았더니 너무나 떡하니 admin.php로 오라는 문구를 확인할 수 있었다. admin.php를 보니 password를 입력하는 페이지를 확인할 수 있었고, 본능적으로 password를 알아내야 함을 알 수 있었다. 하지만 뭔가 공격할 만한 건덕지가 보이지 않았다. admin.php에 가볍게 공격을 시도해보았지만, 여기가 아닌것을 알 수 있었다. 그러던 중, 쿠키를 보니 time이라는 값에 unix timestamp가 설정되어있음을 확인할 수 있었..