이번에는 33번 문제를 풀어보도록 하죠.

 

 

https://webhacking.kr/

 

Webhacking.kr

Index Welcome Stranger! Notice(en) [2019-08-18] In the process of receiving service, some loss of data has been observed. For example, in very few accounts there may be a truncation of the last one letter of an userid. If userid contains multibyte characte

webhacking.kr


이번 문제는 그냥 단계별로 계속 문제를 풀면 됩니다.

소스코드를 보니 get방식으로 get에 hehe라는 문제를 넣으면 되네요.

 

성공. 다음 레벨로 가죠!

 

또 비슷합니다.

 

이번에는 post 방식으로 보내면 되겠네요.

post방식은 이 사이트 내에서 사용할 수 없으니... 1레벨에서 다시 올라와야겠습니다.

이렇게 html에 입력해주게 되면.

1레벨에 버튼이 하나 생기게 됩니다. 저 버튼을 통해 넘어가면??

다음 레벨에도 next가 있게 됩니다.

이제 3레벨로 넘어가죠!

이 코드가 보입니다.

$_SERVER['REMOTE_ADDR']이 myip로 get방식으로 들어가야 한다고 합니다.

 

$_SERVER['REMOTE_ADDR']는 ip를 나타내는 변수이기 때문에 우리의 ip를 찾아서 get 방식으로 넣어주면 됩니다.

깔끔하게 다음으로 넘어갑시다.

힌트를 주네요... 소스코드를 확인합시다.

 

힌트는 time()함수의 값이고, password 변수에 md5로 인코딩된 time()함수의 값이 있어야한다고 합니다.

time()함수는 현재 시간을 타임스탬프 방식으로 나타내는 함수입니다. 그래서 hint가 저렇게 이상한 숫자로 나오죠.

계속 새로고침하면서 보면 1초마다 값이 1씩 커지게 됩니다.

 

get함수에 미래에 도달할 시간을 md5로 인코딩해서 넣고 그 시간이 될 때까지 대기를 타주도록 해보겠습니다.

 

성공... 한 10번 시도한거같네요... 값을 넣어도 next가 안나와 ㅠㅜ

 

다음 5번 문제...

ㅎㅎ... 하기싫지만 해야합니다...

앞서 푼 문제들처럼 get post를 주고 넘어가줍시다.

 

쿠키까지 넣어주고 새로고침 하면 됩니다...

 

6번문제...

와... 진짜 귀찮네요 ㅠㅜ

 

해줍시다... 쿠키도 넣어주고...

OK..! 이거 듣기로는 10번까지 있다고 하던데... ㅠㅜ

 

7번문제...

 

이번에는 사알짝 신박해졌습니다. '.'을 공백으로 치환해주면 됩니다. ㅎㅎ

성공... 참고로

$_GET[$_SERVER['REMOTE_ADDR']] == $_SERVER['REMOTE_ADDR']

이기 때문에 $_SERVER['REMOTE_ADDR']에 해당하는 ip주소에 .을 다 빼고 get 안이랑 우항이랑 같은걸로 입력해주시면 됩니다.

 

8번!

오호...

만약 addr에 아무것도 입력이 되지 않는다면 자신의 ip를 입력한다고 합니다. 

그러면 addr에 127.0.0.1을 주면 될 것 같네요.

 

빠르게!!

9번문제!

계산문제네요..?

chr이 아스키코드를 문자로 바꾸는 거니까...

아스키코드 97에 해당하는 문자부터 99 101 103 105... 121까지 바꿔서 넣으면 되겠습니다.

a c e g i k m o q s u w y 이걸 입력하면 됩답니다.

 

짜잔...

 

마지막 대망의 10번...

뭔데 짜증나게 생겼을까요...

ip 변수에 제 ip가 입력되고.

ip의 길이가 15니까 0부터 15까지 총 16번동안 ip의 값에서 각 숫자에 해당하는 값을 아스키코드로 바꿔줍니다.

ip에서 .을 없애주고.

substr이 문장에서 어느 지점부터 몇개를 추출하는거니까 ip에서 10개문자를 빼서 ip에 다시 넣어주고.

값에 2를 곱한 값을 answer에 넣고.

값에 2를 나눈 값을 answer에 넣고.

또 .을 answer에서 없애준 뒤에.

answerip/[answer변수값}_[ip변수값].php 파일을 열고.

f에 뭘 적고

닫네요..?

뭔지 모르겠네...

일단 저 파일을 계산해서 열어봅시다...

 

귀찮으니까... 제 컴퓨터에서 계산할래요...

 

http://phptester.net/

 

PHPTESTER - Test PHP code online

This application is free so please don't break it! Contact :phptester.net@gmail.com Dear Hacker you don't need to hack this free website to prove that you are very good!!!! Updates: I'm trying a new approche, PHP 7.1 to 7.4 version added but still in test

phptester.net

대충 이런곳에서 코드를 넣고 하겠습니다.

<?php

$ip = "ip주소를 입력해주세여";
for($i=0;$i<=strlen($ip);$i++) $ip=str_replace($i,ord($i),$ip);
$ip=str_replace(".","",$ip);
$ip=substr($ip,0,10);
$answer = $ip*2;
$answer = $ip/2;
$answer = str_replace(".","",$answer);
echo "answerip/{$answer}_{$ip}.php";

ip주소를 입력하고 하시면 됩니다!

 

휴우... 다른거 4문제정도 풀 시간을 여기에 쏟았네요... 그래도 풀었으니 기분은 좋아요 :) ㅎㅎ

'Hacking-기초 > [WEB] Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 54번 [100]  (0) 2020.08.16
Webhacking.kr 10번 [250]  (0) 2020.08.16
Webhacking.kr 32번 [150]  (0) 2020.05.22
드디어...사이트에 댓글을...  (0) 2020.05.21
Webhacking.kr 19번 [150]  (0) 2020.05.21

https://github.com/Nesquitto/FileUpDownComplete

 

Nesquitto/FileUpDownComplete

파일 입출력까지 구현한 페이지입니다. Contribute to Nesquitto/FileUpDownComplete development by creating an account on GitHub.

github.com

 

여기에 모든 코드를 올려놓았습니다.

테이블은 추가로 이것을 만들었습니다.

그리고 php파일에 있는 폴더에 uploads라는 폴더를 만들어주셔야 동작합니다.

 

##ubuntu같은 경우에는 777권한을 폴더에 주셔야 파일 업로드 다운로드가 가능합니다.

'Web-기초 > AWS 웹서버' 카테고리의 다른 글

웹사이트 취약점 찾기...  (0) 2020.07.31
AWS 웹사이트 다시 만들었습니다.  (0) 2020.07.31
여러 기능구현 페이지  (0) 2020.04.22
웹서버 ubuntu  (0) 2020.04.22
AWS Window에서 Bitnami WAMP 다운로드  (0) 2020.04.20

이번에는 32번 문제를 풀어보도록 하죠.

 

 

https://webhacking.kr/

 

Webhacking.kr

Index Welcome Stranger! Notice(en) [2019-08-18] In the process of receiving service, some loss of data has been observed. For example, in very few accounts there may be a truncation of the last one letter of an userid. If userid contains multibyte characte

webhacking.kr


이런 랭킹이 나오길래 제 아이디도 있나 찾아봤더니 0점에 있었습니다...

아무래도 이걸 100점으로 만드는 것 같은데...

해보도록 하죠!

 

흐음...

클릭했더니 1이 올라가고 또 눌렀더니 이미 투표를 했다고 합니다.

쿠키를 봤더니

이거때문인거같습니다. 삭제하고 눌렀더니 다시 투표가 되네요..

이 쿠키를 금지시키고 100번 눌러줄게요..ㅎㅎ 다른 방법은 모르겠으니 그냥 100번 클릭하겠습니다.

 

클릭을 한번하고 일정시간이 지나니 맨 위로 올라와지길래 연속 클릭해서 계속 눌러줬습니다.

 

어이없습니다...

끄읕

'Hacking-기초 > [WEB] Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 10번 [250]  (0) 2020.08.16
Webhacking.kr 33번 [200]  (0) 2020.05.24
드디어...사이트에 댓글을...  (0) 2020.05.21
Webhacking.kr 19번 [150]  (0) 2020.05.21
Webhacking.kr 18번[100]  (0) 2020.04.29

스켈레톤 잡아보도록 하겠습니다.

 

1. argc <2

-인자가 1개 이상이어야 합니다.

2. egghunter

-환경변수를 사용할 수 없습니다.

3. argv[1][47] != '\xbf'

-ret가 가리키는 주소가 bf로 시작해야합니다.

4. argv의 길이가 48보다 크면 안됩니다.

-ret까지만 건드릴 수 있습니다.

5. 버퍼를 사용할 수 없습니다.

6. 입력된 인자의 개수를 유지합니다.

 

흐음... 참 막막해졌습니다... 어떻게 해야할까요

 

일단 새롭게 컴파일 해주고 gdb로 찾아보기로 했습니다.

 

대충 값을 넣고 ret전에서 사용할 수 있는 부분이 있을지 찾아보았습니다.

x/2000x $esp를 작성했더니 bfffff~~부분에서 무슨 값이 들어있다는 것을 확인할 수 있었습니다.

x/2000s $esp로 확인해봤더니 파일 경로와 이름이 있습니다.

 

이전 문제 중에 이름을 변경해서 사용하는 방법이 있었는데 이것도 동일하게 사용할 수 있을지 확인해보겠습니다.

이렇게 A를 200개 넣어준 이름으로 바꿔주고 gdb로 확인해보았습니다.

문자열로 나타낸건 이렇게 나오고

제대로 되는것 같습니다!

그러면 쉘 코드를 넣어서 해보겠습니다.

 

되면 좋겠네요 ㄷㄷㄷ

일단 /(슬래시)기호가 없는 쉘 코드를 가져와서 하겠습니다.

`python -c "print '\x90'*100 + '\xd9\xc5\xd9\x74\x24\xf4\xb8\x15\xc3\x69\xd7\x5d\x29\xc9\xb1\x0b\x31\x45\x1a\x03\x45\x1a\x83\xc5\x04\xe2\xe0\xa9\x62\x8f\x93\x7c\x13\x47\x8e\xe3\x52\x70\xb8\xcc\x17\x17\x38\x7b\xf7\x85\x51\x15\x8e\xa9\xf3\x01\x98\x2d\xf3\xd1\xb6\x4f\x9a\xbf\xe7\xfc\x34\x40\xaf\x51\x4d\xa1\x82\xd6' +'\x90'*40 "`

시험삼아서 복사했던 것을 가지고 넣었더니 잘 되네요.

 

잘 되네요.

이제 실제 파일에 적용해보겠습니다.

 

풀었습니다!

 

제목도 못바꾸게 해버리면... 파일 경로를 바꿔서 할 수 있지 않을까 생각하고 있습니다.

뱀파이어를 잡으러 가죠.

 

제약 조건이 확 줄었네요. 근데 그 대신 ret 부분의 제약이 1개 늘었습니다.

1. argc<2

-제목이랑 1개의 인자를 더 가지고 갈 수 있네요.

2. argv[1][47] != '\xbf'

-이건 넘어가죠

3. argv[1][46] == '\xff'

저희가 보통 ret에 넣던 주소는 0xbffffaaa 이런 식이었는데 bf 뒤의 두문자가 ff면 안된다네요.

 

일단 대충 실행해봅시다.

여기서 아주 중요한 사실을 발견할 수 있습니다.

0xbfffffff까지 출력이 되기 때문에 argv[1]의 문자열 개수를 엄청나게 많게 해버리면 이 argv[1]이 시작하는 주소값이 앞으로 점점 이동할 것이라는 것입니다.

 

시험삼아서 한 10000개정도만 넣고 다시 실행해보겠습니다.

 

이렇게 보니까 주소값의 시작 위치가 아까는 bffff~~~이었는데 지금은 bfffd~~로 당겨진 것을 볼 수 있습니다.

이제 할 수 있을것 같네요.

100000개를 넣어보았습니다. 이제 ret주소를 다룰 수 있겠네요.

바로 넣어서 BOF 해주겠습니다.

 

이건 그냥 대충 주소값을 넣어도 되겠는데요?

 

깔끔하게 성공했습니다!

 

끄읕

+ Recent posts