SQL INJECTION문제라고 적어 놓았다.

우선 1을 제출하니 ZZIBONG이라는 단어가 뜬다.

먼저 소스를 보니 index.phps로 가라고 한다.

소스를 보니 get으로 lv의 값을 받는다.

그리고 그 값들은 eregi로 필터링을 거치고 난 후에

select id from members where lv = $_GET[lv]; 쿼리문에 쓰인다.

이때 뽑아낸 id가 admin이면

성공!

일단은 and 와 or는 막혀있기 떄문에

&가 되는지 확인하니 된다.

|또한 막혀있지않다.

우선 1||id=admin으로 뚫어보려고 했으나 반응이 없고

char로 뚫어도 뚫리지 않았다.


그렇게만 떴다

그래서 hex로 도전했지만 실패...


그래서 lv값을 2로 hex로 도전하니

49번도 클리어!!!




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

Webhacking.kr 13번  (0) 2018.01.25
Webhacking.kr 43번  (0) 2018.01.25
Webhacking.kr 53번  (0) 2018.01.18
Webhacking.kr 35번  (0) 2018.01.18
Webhacking.kr 48번  (0) 2018.01.17

응 안녕~

소스를 보면 index.phps로 가보라고 한다.

가보면 get으로 받은 answer가 hidden_table과 같으면 문제가 풀리고

val변수는 필터링이 된다.

그렇지만 val변수는 select test1 from $hidden_table where test2=$GET[val]의 쿼리문이 완성 되면

answer값을 집어 넣을 수 있는 칸이 나온다고 되어 있다.

우선 val=1을 집어넣으면 test

2값은 guest

3값은 admin

4값은 zombie가 나온다!

하지만 우리는 hidden_table명을 집어 넣어줘야 하지만

알지 못하기 때문에 

다시 쿼리문을 보자면

"select test1 from $hidden_table where test2=$GET[val]"에서

hidden_table에서 우리는 값을 받아온다.

그리고 echo는 f[0]이다.

그렇지만 select가 막혀있고 union도 막혀있다.

그래서 찾아보던 중

쿼리문 끝에 procedure analyse()를 입력하면

테이블의 정보들과 다양한 컬럼 정보가 출력된다.

그리고 그중 제일 처음은 file_name, 즉 테이블의 이름을 볼 수 있다.




예를들면 채소의 테이블을 뽑아내면 컬럼명은 물론 데이터베이스 명과 테이블 명또한 볼 수 있다.

그래서 ?val=3 procedure analyse()를 입력하면

나오는 문장에서 가운데가 테이블 명이다.

그래서 테이블 명을 제출하면!

53번도 클리어!




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

Webhacking.kr 43번  (0) 2018.01.25
Webhacking.kr 49번  (0) 2018.01.19
Webhacking.kr 35번  (0) 2018.01.18
Webhacking.kr 48번  (0) 2018.01.17
Webhacking.kr 56번  (0) 2018.01.17

첫 화면은 전화번호를 입력하는 칸과

index.phps가 있다.

아마 HellSonic이 문제를 만들었나보다.

소스를 보니 phone번호를 받으면

eregi에서 한번 필터링 한 후에

session id,ip,phone으로 새로운 컬럼을 추가하고

id=admin이고 ip가 내 아이피인 컬럼이 있을 때 

성공하는 소스이다.

먼저 eregi에서 걸러지는 =을 넣으니

no hack가 뜬다.

그리고 무작위 숫자를 넣어보니 Done이라고 성공했다는 메시지만 뜨시

다른 반응은 없었다.


먼저 burp suit으로 intercept한 패킷을 보면

우리는 input으로 phone만 조작할 수 있다.

그렇기 때문에 우리는 id가 admin인 컬럼을 만들어 주어야 하고

그렇기 때문에 phone의 내용에 id는 admin인 새로운 value값을 입력해 줘야 한다.

하지만 magic_quotes_gpc기능 때문인지

query error가 떠 버린다.

그래서 우회하기 위해


char로 넣어주면

35번도 클리어!!


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

Webhacking.kr 49번  (0) 2018.01.19
Webhacking.kr 53번  (0) 2018.01.18
Webhacking.kr 48번  (0) 2018.01.17
Webhacking.kr 56번  (0) 2018.01.17
Webhacking.kr 60번  (0) 2018.01.16

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

우선 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

+ Recent posts