첫화면은 여러 글들이 올라와있다.

우선 memo에 아무 말이나 적어서

올리니 내 글과 delete키가 있다.

소스를 보면 누른 시간이 기록되는 것과 나머지는 별로 중요한 것이 없다.

먼저 intercept해 보니

memo와 filename을 보낸다.

그래서 파일명을 1.PNG로 보냈더니

파일명은 3글자를 넘어 갈 수 없다.



그래서 두글자로 보내니 내 이름의 게시물이 만들어 졌다.

그리고 upload file을 들어가 보니

null밖에 없는 것을 발견할 수 있다.

그리고 지울때 mode=del&time=~라고 적혀 있는 문자열을 발견할 수 있다.


이것이 리눅스의 명령어를 사용한다면

파일을 지우기 위해서는 rm을 썼을 것 이다.

그렇다면 리눅스 명령어는 ; 또는 &&으로 명령어를 끝내고 바로 이어서 다른 명령어를 칠 수 있다는 사실을 통해

우리는 파일명을; 을 하고 뒤에 명령어를 쓴다면

delete할 때에 명령어가 실행 되어질 것 같다는 가정을 할 수 있다.

그래서 filename을 ;ls로 바꾸어 upload 시켜주고

delete시켜주면

우리는 새로운 문자열을 볼 수 있다.

그중 수상한 문자열이 있다!

이 문자열을 주소에 붙여서 넣어주면

48번도 클리어!!!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 53번  (0) 2018.01.18
Webhacking.kr 35번  (0) 2018.01.18
Webhacking.kr 56번  (0) 2018.01.17
Webhacking.kr 60번  (0) 2018.01.16
Webhacking.kr 40번  (0) 2018.01.16

첫화면은 이러하다.

먼저 readme를 눌러보니 

이런 access denied이 나왔다.

그리고 hi~를 눌러보니

이렇게 나온다.

소스를 먼저 보자.

일단 Thanks to는 만든 사람인것 같았다.

우선 input은 name이 search로 post방식으로

전송한다.

search에 먼저 hi~를 치니

게스트만 나왔다.

그래서 h를 치면 둘다

i를 치면 둘다

나온다. 

그래서 무작위로 처넣다 보니

p는 admin만

k도 admin만 나온다.




그리고 숫자 0은 둘다 나온다

.도 admin만 나온다.

그래서 파이썬 소스를 짜서 돌려보니

admin가 나오는 것은 이것들

guest가 나오는 문자는 이것들

둘다 나오는 문자는 요렇게 된다.


이때 _를 마구 넣다보면 

_ 3개 까지는 둘다 나오는데

4개부터는 admin만 나오고

7개 부터는 아무 것도 안나온다.

이것은 아마 6자리가 admin의 문자이고

3개는 guest일거라 추측 할 수 있다.

그래서 ()_____

즉 괄호 안에 우리가 찾은 admin만의 문자중 하나를 넣고 뒤를 _ 5개를 해서

찾다보면 제일 첫 글자를 찾을수 있고

k()____으로 괄호안에 다시 admin만의 문자를 대입해서

해 나가다 보면

파이썬으로 짜서 돌려보니

요런 주소같은 것이 나온다.

이것을 주소에 넣어서 돌리면


56번도 클리어!!!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 35번  (0) 2018.01.18
Webhacking.kr 48번  (0) 2018.01.17
Webhacking.kr 60번  (0) 2018.01.16
Webhacking.kr 40번  (0) 2018.01.16
Webhacking.kr 41번  (0) 2018.01.15

첫화면은 Access Denied으로 나를 반겨준다.

소스를 보면 우선 쿠키에 숫자가 없어야 한다.

그리고 get으로 mode=auth를 받아야 하고 

그러면 화면에 Auth가 뜬다.

그리고 $f는 /readme/id.txt를 받고

그것과 id를 비교해서 id가 안에 있으면

문제가 풀린다.

그리고 id가 없으면

readme/id.txt를 만드는데

1초뒤에 없어진다....

우선 쿠키값을 알파벳만 사용해서 만들었다.

그러니 화면에 hi라고 뜬다!

mode=auth를 get방식으로 또 넣어주니

Auth~라고 뜬다.


그리고 다시 들어가보아도 변화가없다.

이것은 계속 만들었다가 1초뒤에 사라지기 때문이다.

그래서 internet explorer로 새로 쿡시로 숫자없는 쿠키를 만들고 들어가서


1초안에 두개를 돌리면


60번 클리어!!!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 48번  (0) 2018.01.17
Webhacking.kr 56번  (0) 2018.01.17
Webhacking.kr 40번  (0) 2018.01.16
Webhacking.kr 41번  (0) 2018.01.15
Webhacking.kr 51번  (0) 2018.01.15

화면이 no,id,pw로 구성되어 있다.

그냥 login을 눌렀더니 guest로 로그인이 되었다.

no를 2로 바꾸어 보니

로그인이 실패했다.

소스를 보니 처음에 적혀있던 pw는 guest였고

no,id,pw로 get방식으로 전송된다는 것을 알았다.

그래서 no=1&id=guest&pw=guest-- 을 넣었더니

뒤에 id와 pw가 달린다.

이렇게 넣어서 성공이 되는 것을 보니 쿼리문 순서가 id,pw,no인 것 같다. 그래서 no에 id를 넣어봤자 소용이 없었다.


그리고 access denied이 된다.

그리고 no=0을 넣으면 반응이 없다..

그리고 or는 안먹히는 것으로 봐서 or , and는 안먹히고 기호 &,|만 먹히는 것 같다.

요런 식으로

no=1=1또한 그냥 성공

id=guest=guest를 써서 여집합을 만들어 보려했으나 실패



substr을 써보니 이건 필터링이 안된다.

그래서 no=2||id=0x61646D696E를 넣어주면

새로운 화면이 나온다.

여기서  0x61646D696E는 admin을 hex한 것인데

admin은 안되어 넣어보았다.

그래서 length(pw)로 pw의 길이를 알아내고 난 후

import urllib.request

import re


if __name__ == "__main__":

    code = [num for num in range(33,65)]+[num for num in range(97,127)]+[num for num in range(91,97)]

    head = {'Cookie':'PHPSESSID=fd06535e7ec7b5532faa2a20b8444d6f'}

    for i in range(1,11):

        for j in code:

            req = urllib.request.Request("http://webhacking.kr/challenge/web/web-29/index.php?no=2||substr(pw,"+str(i)+",1)="+str(hex(j))+"&id=guest&pw=guest",headers=head)

            data = urllib.request.urlopen(req).read()

            data = data.decode('UTF-8')

            find = re.findall("admin",data)

            if find:

                print(i,chr(j))

파이썬으로 돌려주면 

이렇게 답이 나온다.

이때 2번째는 guest의 u와 같아서 안나온다.

40번 클리어!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 56번  (0) 2018.01.17
Webhacking.kr 60번  (0) 2018.01.16
Webhacking.kr 41번  (0) 2018.01.15
Webhacking.kr 51번  (0) 2018.01.15
Webhacking.kr 61번  (0) 2018.01.12

첫화면은 어떤 파일을 업로드 시켜라고 한다.

먼저 소스를 보니 

index.phps로 들어가라고 해서 들어 가 보았다.

코드가 나오는데 대충 보면 완전 난독화를 위한 코드이지 실제로는 별거 없는 소스같다.

그래서 손수 필터링을 해 보니

한글로 필요없는거 다 빼보니

파일을 올린것에서 이름을 필터링하고

대체도 해서 hidden_dir에 저장하고 그 파일에 패스워드를 쓴다.



우선은  . 을 넣어 보았더니


no 라고 나온다.


그래서

str_replace중 하나인 <를 넣어보니

hidden_dir같은 게 warning으로 나온다;

그래서 정상적으로 kkk라는 파일을 업로드 시키고 들어가보니

정답이 나온다!


41번도 클리어!!!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 60번  (0) 2018.01.16
Webhacking.kr 40번  (0) 2018.01.16
Webhacking.kr 51번  (0) 2018.01.15
Webhacking.kr 61번  (0) 2018.01.12
Webhacking.kr 46번  (0) 2018.01.12

첫 화면은 로그인 창이 뜬다.


그래서 그냥 제출을 눌러보니 Wrong이라는 메시지를 띄운다.

그런데 화면 오른쪽 하단에

source라는 버튼이 있어서 들어가보니 소스가 나왔다.

id와 pw를 post방식으로 받는데 그중 pw를 md5로 암호화 하여

쿼리문으로 집어 넣는다.

그 쿼리문은 select id from challenge_51_admin where id='$input_id' and pw = '$input_pw'"

문이다.

그래서 md5(,)문을 찾아보았다.

md5(string,raw)문에서

false면 hex로

true면 binary로 출력을 하는데

여기서는 true로 나온다.


그래도 일단은 sql injection같아서

admin으로 제출을 하면 Wrong이 뜨고


주석을 걸어도 같은 반응이라 blind sql injection은 안된다;;;

그래서 sql문을 직접 만들어 보니

id='gamja'='gamja'를 출력해 보면

gamja말고 나머지가 출력되는 것을 볼 수 있다.

그리고 항상 = true가 아니면

여집합을 출력시키는 것을 알았다;;


그렇다면 우리는 쿼리문에서 우리가 다르게 친 암호 말고의 값들이 나올수 있게 pw에 =을 포함시켜주면 된다.

그래서 md5로 encoding했을 때 나오는 값이 =이 든 값을 찾기 위해서

php문을 만들어 출력시켜 보면

이렇게 많은 값이 나온다.

(참고로 웹에서 실행 해 보고 싶다면

"http://phptester.net/"

여기로 가서 하면 된다.)

그 값을 pw로 넣어보면

51번도 클리어!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 40번  (0) 2018.01.16
Webhacking.kr 41번  (0) 2018.01.15
Webhacking.kr 61번  (0) 2018.01.12
Webhacking.kr 46번  (0) 2018.01.12
Webhacking.kr 22번  (0) 2018.01.11

우선 첫 화면은 매우 심플하다

source를 눌러보자~!

get으로 받은

id가 없으면 guest이고

id는 eregi로 필터링 되며

길이가 18보다 커서는 안된다.

또한 쿼리문은 c_61에서 내림차순으로 1개의

내용물만 뽑아낸다.


우선 반응을 보기위해

일부러 필터링 되는 union을 넣어보니 

Access Denied이 뜬다.


그렇다면 id에 들어있는 내용물을 하나 뽑아보니

zombie가 나온다.

그런데 eregi로

거의 다 막혀있다;;;

그래서 뒤의 쿼리문이 필요 없이 admin만 출력해줄수 있는 것이라면

select 뒤에 어떤 값과 그 뒤에 attribute명만 치면

attribute안에 그 값이 들어있게 되어

그 값을 불러 올 수 있다.

그래서 우선 1을 불러내 보았다.

id = 1 id를 하면

id attribute안에 1을 불러왔다.

그래서 admin을 불러오니

아무것도 안나온다. 


그래서 hex로


넣어주니

61번도 클리어!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 41번  (0) 2018.01.15
Webhacking.kr 51번  (0) 2018.01.15
Webhacking.kr 46번  (0) 2018.01.12
Webhacking.kr 22번  (0) 2018.01.11
Webhacking.kr 7번  (0) 2018.01.11

46번의 첫 화면이다!


우선 1이 이미 입력 되어 있어서

제출을 눌러보니

저런 글이 뜬다.

먼저 화면의 소스를 보니

index.phps로 가라고 적혀있다.


내용을 보니

제출을 누르는 창의 값은 lv이고

lv은 띄어쓰기,*,%,/은 없애고

select등등을 필터링 한다.

그리고 get으로 받은 lv값을 query문에 넣어서

q에다가 id와 cash값을 넣고

id가 admin이면 클리어 하는 문제이다.

우선 or값은 이용할 수 있는지 넣어보았더니

된다.

lv=1%0Aor%0A1=0또한

가능하다고 나온다.

그렇다면 or문으로 admin을 만들어 보자.

일단 그냥 admin으로는

정답이 안나온다.

그래서 char로 우회해서 넣어주면

46번도 클리어!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 51번  (0) 2018.01.15
Webhacking.kr 61번  (0) 2018.01.12
Webhacking.kr 22번  (0) 2018.01.11
Webhacking.kr 7번  (0) 2018.01.11
Webhacking.kr 8번  (0) 2018.01.10

+ Recent posts