본문 바로가기

보안공부

(92)
wargame.kr type confusion 풀이 - json WARGAME.KR type confusion 풀이[ json ]오늘은 wargame.kr의 type confusion 문제를 풀어보자. 문제에 들어가면 다음과 같이 입력창 하나와 이 페이지의 소스코드를 준다. 우선 제공해준 Backend단의 코드를 한번 분석해보자. 우선 0.5초(500000 마이크로초)를 대기한 후, lib.php를 적재한 후 json형태로 넘겨받은 데이터를 파싱해 $json에 저장한다.$key에 welcome to wargame.kr!_(랜덤 문자열)가 SHA1으로 암호화된 값을 대입해준다.파싱된 JSON($json)에서 key값이 $key의 값과 같으면 flag를 출력해주고, 다를 경우 false로 응답해주는 $ret를 json 형태로 작성하여 응답해준다. 그럼 이제이 사이트에 있..
webhacking.kr 10번 문제 풀이 - 함수마라톤 WEBHACKING.KR 10번 문제 풀이[ 함수마라톤 ]※ 이 문제는 IE에서만 작동합니다! ※그럼 오늘은 webhacking.kr 10번 문제를 풀어보도록 하자. O 저 O에 붙어있는 onclick태그를 통해 style태그를 통해 오른쪽으로 1씩 이동해주는 코드이다. 따라서 O를 누르면 yOu로 바뀌고, 누르면 오른쪽으로 1칸 이동시켜준다.전에도 언급한 바와 같이 1칸씩 이동하면 느릿느릿하니 한국인의 정서에 맞지 않는다. 따라서 100으로 변조하자. O 100으로 변조하고 몇번 눌러주면 노란 바 위에 O가 올라가며 문제가 해결된다. (800으로 설정해주고 누르면 바로 해결된다.) WEBHACKING.KR 10번 문제 클리어!
webhacking.kr 23번 문제 풀이 그럼 오늘은 webhacking.kr 23번 문제를 풀어보도록 하자. 를 입력하라는게 목표라고 한다. 뭐, 그쯤이야 쉽지... 라고 생각하던 순간... WTF? 뭔가 이 페이지의 코드에 Javascript에 쓸만한 내용이 있지 않을까? 라는 생각으로 확인했더니 ... Nope 그러면 우리가 직접 필터링되는 단어를 찾아봐야겠죠? 보아하니 특수문자는 막히지 않은것 같네요. script라는 단어와 script를 자른 단어가 되지 않는것으로 보아, sc, cr, ri, ip, pt 의 형태로 차단된것으로 보입니다. 따라서 우리는 %00으로 뛰어쓰기 처리를 해봅시다. 그렇다면 구문은 다음과 같이 작성되겠죠? a%00l%00e%00r%00t%00(1);%00 form에 소속된 칸을 통해 제출하면 %를 인코딩시켜 %..
webhacking.kr 54번 문제 풀이 - 한국인의 참을성 WEBHACKING.KR 54번 문제 풀이[ 비교대신 대입! ]그럼 오늘은 webhacking.kr 54번 문제를 풀어보도록 하자. 비밀번호는.... 일단 기다려봅시다...기다리면 일단 하나씩 나옵니다. 하지만 현대 문명의 한국인들은 이런 느리고 깐죽대는 행위를 가장 싫어하죠.따라서 우리는 우리의 비밀번호를 알기 위해 코드를 작성해봅시다. 코드를 재작성하기 위해서는 원래코드를 알아야겠죠?원래 코드는 다음과 같습니다. function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } ca..
webhacking.kr 20번 문제 풀이 - 비교대신 대입! WEBHACKING.KR 20번 문제 풀이[ 비교대신 대입! ]그럼 오늘은 webhacking.kr 20번 문제를 풀어보도록 하자. 아무거나 치고 code 섹션에 캡챠까지 치고 submit을 눌렀더니 다음과 같이 뜹니다. 그래서 사이트를 잘 둘러보니 상단에 다음과 같은 문구가 있었다. 사이트가 로드된 시점을 기준으로 2초안에 보내야 하나보다. 사람 손과 인터넷으로는 불가능한 속도니까 스크립트의 힘을 빌려보자.원래 저 페이지의 코드에 있던 스크립트는 다음과 같다. function ck() { if(lv5frm.id.value=="") { lv5frm.id.focus(); return; } if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; } if(lv5frm..
webhacking.kr 58번 문제 풀이 - 3분카레... 아니 플래시 WEBHACKING.KR 58번 문제 풀이[ 3분카레... 아니 플래시 ]그럼 오늘은 webhacking.kr 58번 문제를 풀어보도록 하자. 여기 뭔가 아무거나 치고 싶어지니 한번 쳐봅시다. 그런데 얘가 싫다네요. 그러면 어쩔수 없죠, 이 플래시 파일(swf)을 다운받아버립시다.다운받는법은 다들 아시죠? 암튼 다운로드 하세요. https://www.free-decompiler.com/flash/ 설치과정쯤이야 다들 엔터만 쳐서 설치할것이 뻔하니까 패스하고 바로 로드해 봅시다. 누가봐도 scripts를 보고 싶잖아요 그쵸? 누르니까 하나밖에 없네요 이제 이 버튼에 연결된 scripts를 확인해봅시다. ??????????????????????????????????????????????????????????..
webhacking.kr 12번 문제 풀이 - 아すき WEBHACKING.KR 12번 문제 풀이[ 아すき ]그동안 부제목이 너무 딱딱(?) 하다 느껴서 일본어도 좀 섞어봤습니다.すき가 발음이 스키니까 제목은 아스키입니다. (암튼 그렇다구요) 그럼 오늘은 webhacking.kr 12번 문제를 풀어봅시다. javascript challenge?감 오시죠? 소스에 js코드가 있다는 겁니다.그런데 띠용? 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,..
webhacking.kr 26번 문제 풀이 - 두번인코딩 WEBHACKING.KR 26번 문제 풀이[ 두번인코딩 ]오늘은 webhacking.kr의 26번 문제를 풀어보자.들어가면 이 페이지의 백엔드 코드를 담은 index.phps로 가는 하이퍼링크 하나만 있습니다. 저 링크를 통해 들어가면 이 페이지의 프론트와 백엔드를 모두 확인할 수 있는데, 언제나 그랬듯 백엔드 부분만 살펴볼것이다. if(eregi("admin",$_GET[id])) { echo("no!"); exit(); } GET을 통해 넘어온 id값이 admin이라면 no!를 띄우고 종료한다. $_GET[id]=urldecode($_GET[id]); 사이트를 로드할때 처음 하는 인코딩과 별개로 한번 더 인코딩하여 id값으로 설정해준다. if($_GET[id]=="admin") { @solve(26,..