'Wargame/webhacking.kr'에 해당되는 글 55건


webhacking.kr 14번 문제다.

점수는 100point. 간단할 것 같다.

들어가보니 입력란이 있고 에러가 뜬다.

소스부터 확인해보자.

너무 쉬운코드다. ul값만 구하면 될 것 같다. url에 .kr위치를 세기도 귀찮아서 그냥 ul값을 다음과 같이 구해버렸다.

그대로 입력란에 넣어주면 비밀번호가 나온다.

 

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 16번  (0) 2018.01.10
webhacking.kr 15번  (0) 2018.01.10
webhacking.kr 13번  (0) 2018.01.09
webhacking.kr 12번  (0) 2018.01.09
webhacking.kr 11번  (0) 2018.01.09
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 13번

2018. 1. 9. 17:04

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.


webhacking.kr 12번 문제다.

점수는 250point.

스크립트 부분에 아스키코드값으로 상당히 보기싫게 적힌 코드가 있다. 크롬 개발자모드에서 다음과 같이 수정해 줘보자.

코드를 보니 ck값이  "="+String.fromCharCode(enco_(240))+String.fromCharCode(enco_(220))+String.fromCharCode(enco_(232))+String.fromCharCode(enco_(192))+String.fromCharCode(enco_(226))+String.fromCharCode(enco_(200))+String.fromCharCode(enco_(204))+String.fromCharCode(enco_(222-2))+String.fromCharCode(enco_(198))+"~~~~~~"+String.fromCharCode(enco2)+String.fromCharCode(enco3)

이면 비밀번호값이 나오고 이때 처음에 더했던 =가 공백으로 필터링 되기 때문에 결국 비밀번호는

String.fromCharCode(enco_(240))+String.fromCharCode(enco_(220))+String.fromCharCode(enco_(232))+String.fromCharCode(enco_(192))+String.fromCharCode(enco_(226))+String.fromCharCode(enco_(200))+String.fromCharCode(enco_(204))+String.fromCharCode(enco_(222-2))+String.fromCharCode(enco_(198))+"~~~~~~"+String.fromCharCode(enco2)+String.fromCharCode(enco3)

라고 할 수 있다. 그럼 개발자 모드에서 먼저 enco_함수 먼저 선언해주고 저비밀번호 코드를 입력해주면 간단하게 비밀번호가 나오게 된다.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 14번  (0) 2018.01.09
webhacking.kr 13번  (0) 2018.01.09
webhacking.kr 11번  (0) 2018.01.09
webhacking.kr 10번  (0) 2018.01.09
webhacking.kr 9번  (0) 2018.01.09
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 11번 문제다.

점수는 300point.

흠.. preg_match를 활용한 정규식을 아는가 하는 문제인것같다. get방식으로 받은 val값이 $pat 정규식에 해당하면 성공할 것 같다.


그럼 정규식패턴을 분석하면 될 것 같다.

다행히도 예전에 정규식에대해 살짝 봐뒀던게 도움이 됬다.

[1-3]은 1,2,3중에 하나만 잇으면 되니까 1을 주고

[a-f]도 마찬가지로 a~f범위중 아무문자니까 a

{5}는 바로앞패턴을 5개 반복 이니까 a를 5번 반복해 aaaaa로 만들고

_는 별 의미없으니 그대로

.은 개행문자를 제외한 모든 문자이고 *은 아예없거나 2개이상인걸 뜻하니
hh라는 문자를 주고

IP는 그대로

.*부분은 다시 hh 

그리고 \t는 탭이니까 

결국 전체적으로 완성되는 코드는

1aaaaa_hh125.180.217.107hh탭p탭ass 이다.

이 중에서 공백 문자인 탭부분은 url 인코딩이 필요하니 처리 후 값을 넘겨줬다.


성공! 정규식을 어느정도 알고있어서 쉬어가는 느낌의 문제였다.


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 13번  (0) 2018.01.09
webhacking.kr 12번  (0) 2018.01.09
webhacking.kr 10번  (0) 2018.01.09
webhacking.kr 9번  (0) 2018.01.09
webhacking.kr 8번  (0) 2018.01.09
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 10번 문제다.

점수는 250point. 

흠..뭐지..? O라고 써있는데를 눌러보면 조금씩 오른쪽으로 움직인다.

소스부터 확인해보자.

흠.. 상당히 간단한 문제다.

<a id=hackme style="position:relative;left:0;top:0" onclick="this.style.posLeft+=1;if(this.style.posLeft==800)this.href='?go='+this.style.posLeft" onmouseover=this.innerHTML='yOu' onmouseout=this.innerHTML='O'>O</a><br>

이부분이 핵심인 것 같다. 여기서 한번버튼을 누르면 1씩 증가하고 800이 되면 인자값으로 go=800 형식으로 넘겨 뭔가가 나올 것 같다.

800번을 누를수는 없으니 burp suit로 소스코드를<a id=hackme style="position:relative;left:0;top:0" onclick="this.style.posLeft+=800;if(this.style.posLeft==800)this.href='?go='+this.style.posLeft" onmouseover=this.innerHTML='yOu' onmouseout=this.innerHTML='O'>O</a><br>

형식으로 한번누르면 800칸 넘어가도록 만들었다.

한번 클릭해보자.

????성공했다.

100점짜리보다 쉬운 느낌..? 무슨생각으로 출제한 문제인지는 잘 모르겠다.


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 12번  (0) 2018.01.09
webhacking.kr 11번  (0) 2018.01.09
webhacking.kr 9번  (0) 2018.01.09
webhacking.kr 8번  (0) 2018.01.09
webhacking.kr 7번  (0) 2018.01.09
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 9번

2018. 1. 9. 15:54

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.


webhacking.kr 8번 문제다.

문제만 풀어놓고 포스팅을 너무 미뤄놔서 아무래도 이제 조금씩 포스팅 해야 할 것 같다.

점수는 350point.

들어가보니 별게 없다. 소스부터 확인하자.

index.phps로 들어가봐야 할 것 같다.

흠.. 보아하니 패킷의 USER-AGENT 값을 통해 쿼리를 조작해야 할 것 같다. 

천천히 분석해보니 중요한 구문이 

if(!$ck)
{
$q=@mysql_query("insert into lv0(agent,ip,id) values('$agent','$ip','guest')") or die("query error");
echo("<br><br>done!  ($count_ck[0]/70)");
}

이 부분인 것 같다.  $ck값을 null값으로 가질 수 있도록 하면 내가 원하는 값을 이 구문을 통해 디비에

삽입 할 수 있을 것 같다. 그렇다면 패킷 조작을 통해 USER-AGENT에 값을 주면 $agent에 들어가므로

이부분을 활용해보았다.

그래서 이런식으로 '내가준값','내가준값',admin),('내가준값 와 같은 형태로 값을 넣어주면 values( '내

가준값','내가준값',admin),('내가준값','$ip,'guest') 형태로 들어갈 것이라고 생각해 값을 넣어봤다.

그러면 admin사용자가 삽입되므로 admin에 해당하는 user-agent값을 필터링을 피할 수 있는 값으로

지정해 주면 ck[0]이 admin이 되어 자연스럽게 정답이 나올 것 같다.

USER-AGENT 값에 hiyo','123','admin'),('asdfg 입력해 패킷을 넘겨봤다.


정상적으로 삽입이 된 것 같다.

그렇다면 이제 User-Agent 값을 hiyo로 넣어주면될 것 같다.

성공! 웹쪽은 밀린 포스팅이 너무 많다 ㅠㅠ 당분간 문제푸는거좀 줄이고 포스팅도 좀 같이 하면서 해야할듯... 


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 10번  (0) 2018.01.09
webhacking.kr 9번  (0) 2018.01.09
webhacking.kr 7번  (0) 2018.01.09
webhacking.kr 6번  (0) 2018.01.09
webhacking.kr 5번  (0) 2018.01.09
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 7번 문제다.

점수는 300point.

들어가보니 auth 버튼빼곤 별다른게 안보인다. 눌러보니 접근 거부란다. 소스를 확인해보자.

val=2가 일단 눈에보인다. 염두한 채로 index.phps로 넘어가보자. 흠.. val값을 2로 넣어 보내보려 했더

니 일단 주석에서 값이 없다한다. 대충 소스를 보니 val값으로 입력받은 값을 필터링하고 rand()함수를

통해 ()값을 주는 것 같다. 결국 필터링과 rand()함수를 우회하여 date[0]에 2값이 들어가게 하면 된다.

흠.. 그렇다면 필터링을 우회 하면서 2 값을 줄 생각을 해 val=3-1)#을 줘봤다. 

필터링은 우회가 됬는데 rand()함수를 못벗어난다. 다시한번 생각해보니 val값에 2가 없다는 주석이 생

각났다. 하...삽질 ㅜ 그렇다면 val값 대신 union으로 data[0]에 2값을 넣어야 할 것 같다. 필터링 우회

를 위해 val=3-1))%09union%09select%093-1#으로 값을 줬다. 근데 주석이 제대로 안먹히나? 안

된다... 그래서그냥 (값을 맞춰서  val=3-1))%09union%09select%09((3-1로 값을 줬다.

새로 고침 열심히 하다보면 성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 9번  (0) 2018.01.09
webhacking.kr 8번  (0) 2018.01.09
webhacking.kr 6번  (0) 2018.01.09
webhacking.kr 5번  (0) 2018.01.09
webhacking.kr 4번  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 6번 문제다.

점수는 100point.

떡하니 힌트를 준다. base64 암호화 방식인 것 같다. index.phps 페이지로 들어가보자.



흠.. guest와 123qwe라는 id,pw값을 20번 base64 방식으로 인코딩한 후 여러 필터링을 걸친 값을 쿠키에 저장하는 것 같다.

그다음 쿠키값을 꺼내 디코딩하고 필터링한 것을 다시 원래대로 돌린 값이 admin,admin이면 문제가 풀리는 것 같다. 그렇다면 쿠키값에 guest값 대신 admin 값을 소스와 같은 방식으로 base64 방식으로 20번 인코딩하고 필터링 한 후 넣어주면 될 것 같다. 이 때 필터링하는게 골치아프겠다고 생각했는데 자세히 보니 필터링하는 과정에서 base64의 경우는 애초에 특수문자가 없기 때문에 필터링 과정을 하지 않고 보내면 자연스럽게 디코딩 작업이 이루어진 것과 같은 효과를 내는 걸로 보였다. 생각한대로 한번 값을 넣어보자.

먼저 admin을 base64 방식으로 20번 인코딩하자. webhacking.kr 사이트에서 인코딩이 가능하므로 40번 한 후 burp suit를 통해 쿠키값에 한번 넣어보았다.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 8번  (0) 2018.01.09
webhacking.kr 7번  (0) 2018.01.09
webhacking.kr 5번  (0) 2018.01.09
webhacking.kr 4번  (0) 2018.01.08
webhacking.kr 3번  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 5번 문제다.

점수는 300point.

? 검은색 화면에 딸랑 로그인 조인 버튼 두개가 있다.

로그인 버튼을 눌러봤다. 

로그인 창을 누르고 아무거나 입력해 들어가보았다.

admin 사용자로 로그인 해야 하는 것 같다. 한번 해보자.

패스워드가 틀렸단다.

흠.. sql injection으로 시도해보려다가 처음 메인화면에 join 버튼이 있었으니 한번 그쪽으로 파고들어

보기로 했다.

흠... 조인버튼이 안먹는다. 뭔가 느낌상 admin사용자로 가입을 해야 할 것 같은데 안넘어간다.

소스부터 확인해봐야 할 것 같다.

흠.. 별다를게 없다.. 여기서 한참 고민하다 login.php가 있는 mem/이라는 경로에 뭔가 있을까 싶어 들어가 봤다.

lucky! join.php란 페이지가 있다. 들어가보면 가입창이 나올 것 같다.

...? 뭐가 없다. 진짜로 사진처럼 까맣기만하다. 흠... 소스를 봐야할 것 같다.

흠... 보아하니 script 부분이 핵심이 인 것 같다. 근데 변수 부분이 너무 지저분하다. 대충 정리를 해보기로 하자. 

정리를 하고 보니 다음과 같이 cookie 값에 oldzombie라는 문자열이 있으면 0이상의 값이 반환되어 if

문을 회피하고 또 URL에 mode=1이라는 값이 포함되어 있으면 정상적인 회원가입 창이 나올 것 같다.

burp suit를 켜서 쿠키값에 oldzombie를 넣고 url에 mode=1을 넣어줬다. 근데 자꾸 이상하게 안된다... 아니 원래 되야돼는건데 뭐지 ㅡㅡ? 한참하다 도저히 안되는 이유를 못찾아서 그냥 크롬 개발자 도구를 썻다.

필요한 코드만 입력했다. admin으로 가입을 시도해봤다.

..? 이미 있네..? 흠.. admin사용자로 가입은 해야될 것 같고 우회를 해서 가입해야할 것 같다. admin 뒤에 공백을 줘서 가입하려고보니 최대길이가 5이다. 딱보니 막아논거 같다. 6으로 늘려 공백을 추가하면 가입이 될것 같은 느낌. 해보자한번.

오.. 하다보니 감각이 생긴다. 그대로 로그인해보자.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 7번  (0) 2018.01.09
webhacking.kr 6번  (0) 2018.01.09
webhacking.kr 4번  (0) 2018.01.08
webhacking.kr 3번  (0) 2018.01.08
webhacking.kr 2번  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,