분류 전체보기
[webhacking.kr] old-19
✏️ Check 원래는 id를 입력하는 창이 나타난다. admin을 입력하면 'you are not admin'이라는 메세지가 나온다. guest로 로그인하니 hello guest가 뜨고, logout 버튼은 있지만 실제로 logout이 되지는 않는다. GET 방식으로 id=admin을 입력해도 다시 hello guest로 돌아온다. 🔎 Analyze cookie 값을 보면 userid에 대한 cookie가 있는 것을 볼 수 있다. 보아하니 여러번 디코딩 또는 복호화를 해줘야 할 것 같다. 확인을 조금 더 쉽게 하기 위해 id=a로 변경해준다. 일단 %3D가 "=" 기호를 나타내는 것을 알 수 있고 그렇다면 1차적으로 base64 인코딩이 되어있음을 알 수 있다. 이처럼 32bit의 값이 나온다면 md5..
[webhacking.kr] old-18
✏️ Check SQL Injection을 이용하는 문제라고 친절히 알려줬다. 소스코드를 통해 확인하면 알게되겠지만, 사용자가 입력한 내용을 제출하면 그 결과가 RESULT 부분에 출력될 것이다. 🔎 Analyze 소스 코드 입력값은 $_GET[no] 에 저장된다. 즉, get 방식으로 no 변수에 값이 들어가게 된다. 이 때 result에 반환받는 id에 대한 값이 "admin"이 되어야 문제가 해결된다. 필터링에 주의해서 쿼리를 만들어보자! 일단 [ id='guest' and no=__ ] 부분을 거짓으로 만들고 뒤에 [ or no=2 ] 를 붙여 참이 되는 조건인 no=2에 해당하는 id 값을 반환할 수 있도록 한다. >> 0 or no=2 필터링에 걸렸다. 띄어쓰기 필터링을 우회할 수 있는 방법이..
[webhacking.kr] old-33
✏️ Check 이번 문제는 여러 번 변수 값을 전달해야 해결할 수 있는 문제다. 🔎 Analyze challenge 33-1 GET 방식으로 'get' 파라미터의 값을 'hehe'로 주면 다음 단계로 넘어갈 수 있다. challenge 33-2 이번에는 POST 방식이다. POST 방식으로 'post'의 값과 'post2'의 값을 바꿔줘야 한다. 다음 단계 페이지를 알아냈다. challenge33-3 * $_SERVER['REMOTE_ADDR'] 현재 웹 페이지에 접속한 이용자의 IP 정보를 저장한다. challenge33-4 힌트로 time() 반환 값을 출력해준다. 이 값에 한 15~20초 정도 더한 값에 대하여 md5 해시를 생성한 뒤, password값에 넣은 상태로 여러 번 새로고침하다보면 다..
[Dreamhack] out of money
✏️ Check 이름을 입력하고 로그인하는 페이지다. 아무런 이름을 입력했더니 보유한 코인이 출력되었다. "산타사설거래소"로 들어가면 무담보 대출을 받고, Flag를 구매하거나 코인의 종류를 바꿀 수 있다. 드림 유동성 풀에서는 담보 / 예금 / 대출이 가능하다. 🔎 Analyze 소스 코드 @app.route("/santa/flag", methods=['GET']) def santa_flag(): if session['DHH'] >= 1000.0: if session['debt_DHH'] == 0.0: return render_template("flag.html") else: return render_template("santa.html", session=session, message="빚을 먼저 값으..
[webhacking.kr] old-32
✏️ Check 클릭하면 점수가 1 오르고, 투표는 한 번밖에 할 수 없다. 문제에 대한 별도의 description이 없어서 뭘 해야하는지 아직은 잘 모르겠지만, 일단 나를 최대한 높이 올리는 걸 시도해보려고 한다. 🔎 Analyze 클릭한 닉네임이 hit 변수의 값에 저장되어 전달되는 것을 확인할 수 있었다. 한 번 더 확인해보기 위해 클릭하지 않고 '?hit='를 이용했더니 동일하게 투표되는 것을 확인했다. 그리고 투표를 한 것은 cookie 값을 통해 체크하는 것을 확인할 수 있다. vote_check의 값이 'ok'만 아니게 된다면 계속해서 투표를 할 수 있을 것이다. EditThisCookie에서 vote_check에 대하여 특정 값('ok')를 차단할 수 있도록 규칙을 추가한다. 더보기 #!..
[hackthissite/Javascript] Mission 1 ~ Mission 7
✏️ Mission 1 - Idiot Test 일단 password 입력 부분과 관련한 Javascript 코드를 찾아봐야 할 것 같다. password 버튼에 대한 코드 바로 위에 관련된 스크립트가 포함되어 있다. check 함수의 인자에 cookies 라는 문자열을 전달하면 해결될 것 같다. 🔓 Exploit ✏️ Mission 2 - Disable Javascript webhacking.kr에서 비슷한 문제를 풀었었다. Chrome의 설정을 통해 Javascript를 비활성화시킨다. 🔓 Exploit ✏️ Mission 3 - Math Time 해당 코드가 소스코드에 포함되어 있지 않으므로 console에서 실행시켜 함수를 정의해준다. 🔓 Exploit ✏️ Mission 4 - var 이 화면은 ..
[webhacking.kr] old-17
✏️ Check 일단 초기화면만 봤을 때는 입력칸과 check 버튼만 있다. 🔎 Analyze 소스코드를 확인해보자! 입력한 값은 login.pw로 저장되고, 이 값이 scrip 태그 안의 unlock 변수의 값과 같으면 unlock/10의 값으로 페이지가 이동되고 아마 문제가 해결될 것으로 추측된다. unlock의 값은 console 창을 통해 쉽게 계산할 수 있다. 🔓 Exploit 위에서 계산한 unlock의 값을 pw 칸에 입력해주면 해결된다!
[webhacking.kr] old-16
✏️ Check 별이 보인다. 🔎 Analyze script 태그에서 정의된 mv 함수를 보니 인자값(cd)이 124일 때 뭔가 해결되는 듯한 주석이 작성되어 있다. 그래서 그냥 console창에 mv(124);를 입력해봤다. 🔓 Exploit 허허 허무하게 풀렸다!
[webhacking.kr] old-15
✏️ Check 문제 페이지에 접속하면 바로 "Access_Denied"라는 내용의 alert 창이 나타난다. 🔎 Analyze 혹시 내 계정 자체에 문제가 생긴 건가 싶어서 조금 검색을 해보니 이걸 해결하는게 문제였다..! alert()를 출력하는 코드는 JavaScript에 의해 실행되기 때문에 페이지의 JS를 무력화시키면 된다. Chrome의 설정에서자바스크립트를 사용하지 못하도록 설정할 수 있다. 문제 페이지에 재접속해보면 alert 창이 나타나지 않고, 소스코드도 정상적으로 확인할 수 있다. script 태그의 세 번째 줄의 `document.write(~)`를 console 창에서 실행시키면 [Get Flag] 로 넘어가는 하이퍼링크가 나타난다. 🔓 Exploit [Get Flag]를 클릭하면..
[webhacking.kr] old-14
✏️ Check 일단 초기화면만 봤을 때는 입력칸과 check 버튼만 있다. 🔎 Analyze 소스코드를 확인해보자! ck() 함수를 살펴보면 ul 변수의 값이 빈 칸에 입력해야 하는 값이다. console 창으로 넘어가서 계산해보자! 🔓 Exploit 입력칸에 540을 입력해보면 해결된다!