본문 바로가기

wargame

(74)
giant 이번 문제는 공백을 어떻게 우회하는지에 대한 문제입니다. 저한테는 재미있는 문제여서 기억에 많이 남습니다. 1글자로 공백을 우회해야 합니다. 아래는 아스키코드표에 있는 일부분 입니다. 파란색으로 표시된 부분은 공백을 나타내는 아스키 코드입니다. 즉 우리가 and를 우회하기 위해 &(%26)을 사용하는 것과 같이 사용하는 거라고 보시면 됩니다. 이번 문제에서는 %0b와 %0c로 공백을 우회 할 수 있었습니다.
los bugbear los bugbear 풀이를 하겠습니다. 일단 소스코드는 아래와 같습니다. 인자값으로는 pw 와 no 두개가 있는데요일단 pw 에는 싱글쿼터를 필터링 해서 pw를 이용하여 injection을 하는 것을 불가능 할 것 같습니다. no도 싱글쿼터를 필터링 해서 pw에 \로 우회 시킨다고 해도 싱글쿼터를 사용하지 못하므로 최종적으로 pw는 사용하지 못합니다. 그러면 no를 이용하여 injection을 해야합니다. or and 는 || 와 %26(&)으로 우회를 하면 됩니다.공백도 필터링이 걸려있습니다. 그러면 %0a~%0d 를 이용해서 우회를 해도 되고 /**/를 이용해서 우회 해도 됩니다. substr을 막아 놨네요마지막 if문을 보면 blind입니다. 비밀번호를 알아내야하므로 left,right를 이용하여..
los darkknight los darkknight 풀이 필터를 보면은 일단 pw 와 id 에는 싱글 쿼터를 사용하지 못합니다. 그러므로 쉽게 no 에서 injection을 수행 할 것입니다. no의 필터링을 보면 싱글쿼터가 필터링 되어 있지만. "을 사용하여 싱글 쿼터를 대신 할 수 있습니다. 블라인드 인젝션이므로 like를 사용 하겠습니다.like 에 대한 설명은 golem 글에서 적어 놨습니다. 예를 들어 no= 1 or id like "admin" and pw like "1%" 비밀번호의 글자의 길이는 8입니다. python 으로 간단하게 툴을 짜서 쉽게 비밀번호를 추출 할 수 있습니다.이번 경우에는 비밀번호가 숫자와 영어의 조합입니다. 그러므로 손으로 직접 해도 상관 없습니다. python3 입니다.제가 직접 작성한거라..
los golem GOLEM 풀이 입니다. 쿼리를 보면 pw 에 = 와 or and substr 필터링이 걸려있습니다.or은 || 를 이용해서 우회 and 는 && 를 이요하면 되는데 url 에서 & 는 다른 get 을 넘길 때 사용하므로 %26으로 바꾸셔서 우회하시면 됩니다.%26은 쿼리 단으로 들어가서 mysql 에서 핵스를 자동적으로 해석 하기 때문에 상관 없습니다. ?pw=1' || id like 'admin' # ?pw=1' || id like 'admin' %26%26 pw like '8%' # like 함수를 이용해서 블라인드 인젝션을 수행할 것입니다.like 함수는 특별하게 정규식이 사용 가능합니다. 예를 들면 pw like '1%' 이런 식으로 사용하면 pw 에서 1글자만 비교합니다. 계속 해서 '1a%'..
webhacking.kr 12번 문제 webhacking.kr 12번 문제풀이 일단 시작하면 javascript 문제라고 알려줍니다.소스코드를 보면WorkTimeFun=String.fromCharCode(118,97,114,32,101,110,99,111,61,39,39,59,13,10,118,97,114,32,101,110,99,111,50,61,49,50,54,59,13,10,118,97,114,32,101,110,99,111,51,61,51,51,59,13,10,118,97,114,32,99,107,61,100,111,99,117,109,101,110,116,46,85,82,76,46,115,117,98,115,116,114,40,100,111,99,117,109,101,110,116,46,85,82,76,46,105,110,100,1..
webhacking.kr 10번 webhacking.kr 10번 문제 풀이 일단 문제를 시작하기 이전에 chrome으로 문제를 풀다 풀이를 보러 오신 분들이면 internet explorer로 하세요 !!저는 chrome으로 하다가.. (침묵) .... 캡처를 옛날에 해두었는데사진이 하나도 안보이네요.... 생각을 더듬어 보면서 글을 쓰겠습니다.이번에는 javascript challenge였습니다. 소스코드를 해석해보면 마우스 커서를 올려놓으면 0이 되나 아무튼 저 0을 클릭하면 1씩 이동하게 됩니다.결국 800이 되면 solve를 주는데요 무식하게 0을 800 번 클릭하시는 것도 나쁘지 않습니다. 저는 아래와 같이 수정 했습니다. html 을 this.style.posLeft+=100 이라고 수정했습니다. 그러면 한번 클릭 할 때 마..
webhacking.kr 6번 문제 webhacking.kr 6번 문제를 풀어보도록 하겠습니다. 첫 화면은 위와 같습니다. index.phps를 확인하라내요 위는 php 문법을 해석해 보자면user라는 쿠키값이 없을 때 val_id=guestval_pw=123qweid와 pw를 각각 base64 encoding으로 20번 반복합니다.숫자를 특수문자로 변환 시키는 코드입니다.(신경 x)그리고 그것을 쿠키로 저장시킵니다. 그리고 위의 php 문법은 user가 있을 때에 해당하겠죠? decode를 20번합니다. cookie값은 user와 password입니다. 아이고 사진이 잘 안나왔네요.. 일단 해석을 하면 if 문으로 user와 password를 decode한 값이 admin 일때 solve를 줍니다. user와 password 쿠키를 만들..
webhacking.kr 5번 문제 webhacking.kr 5번 문제를 풀어보도록 하겠습니다. 일단 5번 문제에 들어가게 되면 이렇게 2가지가 나옵니다. Login과 Join이 있는데요 join을 누르시면 위와 같이 Access_Denied가 출력 됩니다. 여기서 url을 잘 보시면 mem 이라는 폴더에 join.php가 존재합니다. 저는 웹페이지 폴더만 보면 일단 디렉토리 리스팅을 시도하는 버릇이 있어서 ㅋㅋㅋ hint 페이지에 도달하게 됩니다. (디렉토리 리스팅을 관련한 문제가 좀 신기했어요)실제 디렉토리 리스팅이 된것은아니고 아마 Errordocument를 설정 혹은 url을 검사해서 이런 페이지로 이동하도록 한건 아닐까 생각해봅니다. 아무튼 여거서 join.php를 누르게 되면 javascript의 영향을 받지 않고 들어올 수 있..