첫 화면은 심플하다.

소스를 보아하니 kk.js, kk2.js, hackme.swf 가 보인다.

그래서 kk.js를 들어가보니

2줄짜리 코드가 있다.

kk = document.URL은 주소를 kk에 저장한다는 것이다.

그리고 substr은 10번째 부터 4개를 다시 kk로 저장한다는 뜻이다.

그래서 http://webhacking.kr/challenge/web/web-35/kk.js에서

hack가 kk에 저장된다.

그뒤 kk2.js로 들어가보니

kk에 hack에다가 me.swf를 더하라고 되어있다.

그렇다면 hackme.swf가 완성된다.

그리고 hackme.swf는 제일 처음 코드에서 봤다.

그렇다면 주소창에

webhacking.kr/challenge/web/web-35/hackme.swf를 쳐 보니

저런 파일이 하나 받아진다.

이것은 첫 화면에 나오는 패스워드를 치는 창이 나온다.

그래서 이것을 메모장으로 열어보니

저런 한줄짜리 완성된 주소가 나온다.

이것을 주소창에 넣어보니

58번 클리어!


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

Webhacking.kr 33번  (0) 2018.01.05
Webhacking.kr 59번  (0) 2018.01.03
Webhacking.kr 32번  (0) 2018.01.02
Webhacking.kr 27번  (0) 2018.01.02
Webhacking.kr 21번  (0) 2017.12.29

32번이다.

랭킹문제인데 문제의 의도를 찾기가 힘들다.

일단 소스를 보니 join버튼을 누르면 vote=add가 시작된다.

밑에 있는 join버튼을 누르니 내 아이디가 랭킹에 포함이 되어 있다.

그래서 아이디를 누르니



안된다고 한다;;;

그래서 쿠키를 한번 열어보니까 

못보던 쿠키가 생겨져 있다.

그래서 vote_check를 지우고 클릭해보니

투표가 된다!

1등을 만들면 해결되는 문제같다.

그래서 계속 쿠기값을 지우고 누르고 하다보니

너무 어이가 없어서

자물쇠 밑에 금지표시를 눌러서

vote_check를 차단시켜버리니까

쿠키가 생기지 않아서 클릭만하면 생성되었다.

100을 돌파하니

32번 클리어!


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

Webhacking.kr 59번  (0) 2018.01.03
Webhacking.kr 58번  (0) 2018.01.03
Webhacking.kr 27번  (0) 2018.01.02
Webhacking.kr 21번  (0) 2017.12.29
Webhacking.kr 25번  (0) 2017.12.29

이번 문제는 SQL Injection 문제이다.

우선 소스에 index.phps가 주석에 있어서 들어가 보니

no에 input값이 들어가서 쿼리를 형성하는 데

eregi가 많은 문자들을 막고있다

일단 = 도 안되고 /도 #도 안된다.

주석을 할 방법을 찾아야 할 듯 싶다.

우선 0을 넣어보니 아무 값이 안뜬다.

1은 게스트이다.

2는 쿼리 에러가 뜬다.

즉 불러올수 없거나 id 가 guest가 아닌가보다.

그렇다면 

소스에서 봤던 것 처럼 (로 input값이 시작되기 때문에

0을 넣고 )으로 닫아주고

id가 admin인 값을 넣어보고 주석을 #인 %23을 넣어보니 %값이 %25로 찍혀서 나온다..


그래서 --도 막혔나 해서 넣어보니 잘 나온다.

하지만 0) or id like admin --은 되지않아서

0) or no like 2 -- 을 해보니

27번도 클리어!

(팁:  --뒤에 꼭 띄워쓰기를 해야한다!)


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

Webhacking.kr 58번  (0) 2018.01.03
Webhacking.kr 32번  (0) 2018.01.02
Webhacking.kr 21번  (0) 2017.12.29
Webhacking.kr 25번  (0) 2017.12.29
Webhacking.kr 18번  (0) 2017.12.27

다시한번 sql injection문제가 나왔다.

blind sql injection은 한번에 뚫기보다는 보통 길이 정도만 수동으로 알아봐주고

나머지는 파이썬 같은 코드로 알아내면 된다.

우선 제출을 누르니 주소창에 no=&id=&pw=가 나온다

아마 pw를 구하는 문제이지 싶다.

소스를 보니 제출 옆의 input값은 no에 값을넣어 주는 창이고 id와 pw는 따로 hidden으로 숨겨져 있었다.

여기서 1값과 2값을 넣어주니 Result값이 True로 변했다.

이 말은 

no   id   pw

테이블에서 no값은 1,2 라는 뜻 이다.

그렇다면 id의 길이를 알아보기 위해서

넣어보니 1,2 모두 5가 나왔다.

그래서 pw의 길이를 넣어서 찾아보니

1은 5, 2는 19가 나왔다.


그래서 admin이 있나 찾아보기 위해 단어의 제일 처음이 a인 것을 찾으니 

no=2 였고

2번째 자리가 d인 것도 no=2였다.

그래서 no = 2의 pw를 찾기로 해 보았다.

그래서 python소스를 이렇게 짜서 돌려보니

pw가 나왔다!


이것을 인증해 주면

21번도 클리어!!

(힌트: 답을 안보고 하실분은 소문자만 쓰이기 때문에 ascii의 범위를 97~122로 해주면 훨씬 빨리 값이 나옵니다)

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

Webhacking.kr 32번  (0) 2018.01.02
Webhacking.kr 27번  (0) 2018.01.02
Webhacking.kr 25번  (0) 2017.12.29
Webhacking.kr 18번  (0) 2017.12.27
Webhacking.kr 39번  (0) 2017.12.27

18번문제다!

우선 sql injection문제이다.

los를 좀 풀어봐서 쉬울거라 생각했다.

index.php를 누르면 소스를 보여준다.

우선 쿼리문에서 id=guest와 no=제출된 값 을 불러와 그게 guest면 hi guest

admin값이면 정답이다.

우선 no=1이라고 치니까 hi guest를 띄운다

여기서 no =1 이면 guest값이라는 것을 알 수있다.

그렇다면 attribute는 id와 no 값이 있다고 가정할 수 있고

그것의 id= guest, no =1은 guest이다.

그렇지만 우리는 admin을 찾아야한다.

그래서 처음 넣는 no값은 false여야 함으로 0을 넣고 그다음 admin값의 자리를 불러와야한다.

소스에서 eregi가 \t와 or, and를 막고 있기 때문에 or를 우회해 쓰려면

linefeed값인 %0a를 or앞뒤로 붙여준다.

그래서 " no=0%0aor%0ano=2"라고 했더니 아무것도 안뜬다.

그래서 위의 url창을 보니 no안에 no가 들어가있다.

그래서 소스를 보니 input창이 no다.

그렇다면 "0%0aor%0ano=2"를 치니

18번도 클리어!!



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

Webhacking.kr 21번  (0) 2017.12.29
Webhacking.kr 25번  (0) 2017.12.29
Webhacking.kr 39번  (0) 2017.12.27
Webhacking.kr 52번  (0) 2017.11.18
Webhacking.kr 47번  (0) 2017.11.18

이번에는 다운받으라는 표시를 해놓고 다운은 받지 못하게 해 놓았다.

그래서 소스를 좀 보니 첫번째 test.txt는

down=dGVzdC50eHQ=라고 되어있고

test.zip은 자바스크립트로 Access Denied를 걸어놓았다.

다른게 없어서

보기에도 base64같은 dGVzdC50eHQ= 를 디코딩 하니

똭 test.txt로 해석되었다. 이건 분명 운명은 아니겠다.

그래서 우리가 다운받고 싶은 test.zip파일을 인코딩해서 down=에다가 넣어주니

파일이 다운되어진다!!!

그런데 암호가 걸려있다.

200점 짜리라 그런가보다.

그래서 암호를 풀수있게 친절히 소스에다가 암호가 숫자만 되어 있다고 말해준 덕분에

이렇게 풀어보니

주소가 나왔고 거기로 들어가니 답이 나오더라.


42번도 클리어~!!!


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

Webhacking.kr 47번  (0) 2017.11.18
Webhacking.kr 38번  (0) 2017.11.18
Webhacking.kr 26번  (0) 2017.11.12
Webhacking.kr 24번  (0) 2017.11.12
Webhacking.kr 6번  (0) 2017.10.22

첫 우선 첫 화면은 이러하다.

그래서 index.phps를 눌러 들어가보니


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php 
if(!$_COOKIE[user]) 
    $val_id="guest"
    $val_pw="123qwe"
 
    for($i=0;$i<20;$i++
    { 
        $val_id=base64_encode($val_id); 
        $val_pw=base64_encode($val_pw); 
 
    } 
 
    $val_id=str_replace("1","!",$val_id); 
    $val_id=str_replace("2","@",$val_id); 
    $val_id=str_replace("3","$",$val_id); 
    $val_id=str_replace("4","^",$val_id); 
    $val_id=str_replace("5","&",$val_id); 
    $val_id=str_replace("6","*",$val_id); 
    $val_id=str_replace("7","(",$val_id); 
    $val_id=str_replace("8",")",$val_id); 
 
    $val_pw=str_replace("1","!",$val_pw); 
    $val_pw=str_replace("2","@",$val_pw); 
    $val_pw=str_replace("3","$",$val_pw); 
    $val_pw=str_replace("4","^",$val_pw); 
    $val_pw=str_replace("5","&",$val_pw); 
    $val_pw=str_replace("6","*",$val_pw); 
    $val_pw=str_replace("7","(",$val_pw); 
    $val_pw=str_replace("8",")",$val_pw); 
 
    Setcookie("user",$val_id); 
    Setcookie("password",$val_pw); 
 
    echo("<meta http-equiv=refresh content=0>"); 
?> 
 
<html
<head
<title>Challenge 6</title
<style type="text/css"> 
body { background:black; color:white; font-size:10pt; 
</style
</head
<body
 
<? 
 
$decode_id=$_COOKIE[user]; 
$decode_pw=$_COOKIE[password]; 
 
$decode_id=str_replace("!","1",$decode_id); 
$decode_id=str_replace("@","2",$decode_id); 
$decode_id=str_replace("$","3",$decode_id); 
$decode_id=str_replace("^","4",$decode_id); 
$decode_id=str_replace("&","5",$decode_id); 
$decode_id=str_replace("*","6",$decode_id); 
$decode_id=str_replace("(","7",$decode_id); 
$decode_id=str_replace(")","8",$decode_id); 
 
$decode_pw=str_replace("!","1",$decode_pw); 
$decode_pw=str_replace("@","2",$decode_pw); 
$decode_pw=str_replace("$","3",$decode_pw); 
$decode_pw=str_replace("^","4",$decode_pw); 
$decode_pw=str_replace("&","5",$decode_pw); 
$decode_pw=str_replace("*","6",$decode_pw); 
$decode_pw=str_replace("(","7",$decode_pw); 
$decode_pw=str_replace(")","8",$decode_pw); 
 
 
for($i=0;$i<20;$i++
    $decode_id=base64_decode($decode_id); 
    $decode_pw=base64_decode($decode_pw); 
 
echo("<font style=background:silver;color:black>&nbsp;&nbsp;HINT : base64&nbsp;&nbsp;</font><hr><a href=index.phps style=color:yellow;>index.phps</a><br><br>"); 
echo("ID : $decode_id<br>PW : $decode_pw<hr>"); 
 
if($decode_id=="admin" && $decode_pw=="admin"
    @solve(6,100); 
 
 
?> 
 
</body
</html

cs

이런 소스가 있었다.

해석을 해보면 처음에 받은 아이디와 비밀번호를 20번 base64로 인코딩을 해서 

쿠키값에 user와 password에 집어넣고 나서 

화면에 출력을 해줄때에는 20번 다시 디코딩을 하는 것으로 보인다.

그래서 이것이 solve화면을 띄우려면

id와 password를 admin으로 만들어 줘야 한다.

따라서

admin을 base64로 인코딩을 20번 해 보았다.


그랬더니

Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsWmFjVkZ0UmxSTmJFcEpWbTEwYTFkSFNrZGpSVGxhVmpOU1IxcFZXbUZrUjA1R1UyMTRVMkpIZHpGV1ZFb3dWakZhV0ZOcmFHaFNlbXhXVm1wT1QwMHhjRlpYYlVaclVqQTFSMWRyV25kV01ERkZVbFJHVjFaRmIzZFdha1poVjBaT2NtRkhhRk5sYlhoWFZtMXdUMVF3TUhoalJscFlZbGhTV0ZSV2FFTlNiRnBZWlVaT1ZXSlZXVEpWYkZKRFZqQXhkVlZ1V2xaaGExcFlXa1ZhVDJOc2NFZGhSMnhUVFcxb2IxWXhaREJaVmxsM1RVaG9hbEpzY0ZsWmJGWmhZMnhXY1ZGVVJsTk5WMUo1VmpKNFQxWlhTbFpYVkVwV1lrWktTRlpxUm1GU2JVbDZXa1prYUdFeGNHOVdha0poVkRKT2RGSnJhR2hTYXpWeldXeG9iMWRHV25STldHUlZUVlpHTTFSVmFHOWhiRXB6WTBac1dtSkdXbWhaTVZwaFpFZFNTRkpyTlZOaVJtOTNWMnhXWVZReFdsaFRiRnBZVmtWd1YxbHJXa3RUUmxweFVtMUdVMkpWYkRaWGExcHJZVWRGZUdOSE9WZGhhMHBvVmtSS1QyUkdTbkpoUjJoVFlYcFdlbGRYZUc5aU1XUkhWMjVTVGxOSGFGQlZiVEUwVmpGU1ZtRkhPVmhTTUhCNVZHeGFjMWR0U2tkWGJXaGFUVzVvV0ZreFdrZFdWa3B6VkdzMVYySkdhM2hXYTFwaFZURlZlRmR1U2s1WFJYQnhWVzB4YjFZeFVsaE9WazVPVFZad2VGVXlkREJXTVZweVkwWndXR0V4Y0ROV2FrWkxWakpPU1dKR1pGZFNWWEJ2Vm10U1MxUXlUWGxVYTFwb1VqTkNWRmxZY0ZkWFZscFlZMFU1YVUxcmJEUldNalZUVkd4a1NGVnNXbFZXYkhCWVZHdGFWbVZIUmtoUFYyaHBVbGhDTmxkVVFtRmpNV1IwVTJ0a1dHSlhhR0ZVVnpWdlYwWnJlRmRyWkZkV2EzQjZWa2R6TVZZd01WWmlla1pYWWxoQ1RGUnJXbEpsUm1SellVWlNhVkp1UW5oV1YzaHJWVEZzVjFWc1dsaGlWVnBQVkZaYWQyVkdWWGxrUkVKWFRWWndlVmt3V25kWFIwVjRZMFJPV21FeVVrZGFWM2hIWTIxS1IxcEhiRmhTVlhCS1ZtMTBVMU14VlhoWFdHaFlZbXhhVjFsc1pHOVdSbXhaWTBaa2JHSkhVbGxhVldNMVlWVXhXRlZyYUZkTmFsWlVWa2Q0YTFOR1ZuTlhiRlpYWWtoQ1NWWkdVa2RWTVZwMFVtdG9VRll5YUhCVmJHaERUbXhrVlZGdFJtcE5WMUl3VlRKMGExZEhTbGhoUjBaVlZucFdkbFl3V25OT2JFcHpXa2R3YVZORlNrbFdNblJyWXpGVmVWTnVTbFJpVlZwWVZGYzFiMWRHWkZkWGJFcHNVbTFTZWxsVldsTmhWa3AxVVd4d1YySllVbGhhUkVaYVpVZEtTVk5zYUdoTk1VcFZWbGN4TkdReVZrZFdiR1JvVW5wc2IxUldXbmRsYkZsNVkwVmtWMDFFUmpGWlZXaExWMnhhV0ZWclpHRldNMmhJV1RJeFMxSXhjRWhpUm1oVFZsaENTMVp0TVRCVk1VMTRWbGhvV0ZkSGFGbFpiWGhoVm14c2NscEhPV3BTYkhCNFZrY3dOVll4V25OalJXaFlWa1UxZGxsV1ZYaFhSbFp5WVVaa1RtRnNXbFZXYTJRMFdWWktjMVJ1VG1oU2JGcFlXV3hhUm1ReFduRlJiVVphVm0xU1NWWlhkRzloTVVwMFlVWlNWVlpXY0dGVVZscGhZekZ3UlZWdGNFNVdNVWwzVmxSS01HRXhaRWhUYkdob1VqQmFWbFp0ZUhkTk1WcHlWMjFHYWxacmNEQmFSV1F3VmpKS2NsTnJhRmRTTTJob1ZrUktSMVl4VG5WVmJFSlhVbFJXV1ZaR1l6RmlNV1JIWWtaV1VsZEhhRlJVVm1SVFpXeHNWbGRzVG1oU1ZFWjZWVEkxYjFZeFdYcFZiR2hZVm14d1lWcFZXbXRrVmtwelZtMXNWMUl6YURWV01XUXdXVmRSZVZaclpGZGliRXB5Vld0V1MySXhiRmxqUldSc1ZteEtlbFp0TURWWFIwcEhZMFpvV2sxSGFFeFdNbmhoVjBaV2NscEhSbGROTW1oSlYxUkplRk14U1hoalJXUmhVbXMxV0ZZd1ZrdE5iRnAwWTBWa1dsWXdWalJXYkdodlYwWmtTR0ZHV2xwaVdHaG9WbTE0YzJOc1pISmtSM0JUWWtad05GWlhNVEJOUmxsNFYyNU9hbEpYYUZoV2FrNVRWRVpzVlZGWWFGTldhM0I2VmtkNFlWVXlTa1pYV0hCWFZsWndSMVF4V2tOVmJFSlZUVVF3UFE9PQ==

이렇게 나왔고 이것을

edit this cookie로 user와 password에 넣어주니

6번 클리어!!!

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

Webhacking.kr 26번  (0) 2017.11.12
Webhacking.kr 24번  (0) 2017.11.12
Webhacking.kr 4번  (0) 2017.10.22
Webhacking.kr 20번  (0) 2017.10.16
Webhacking.kr 54번  (0) 2017.10.16


첫 화면을 보니 nickname 창 comment창 code 창에 어떤 값을  처넣어야 하는 문제이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
function ck()
{
 
if(lv5frm.id.value=="") { lv5frm.id.focus(); return; }
if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; }
if(lv5frm.hack.value=="") { lv5frm.hack.focus(); return; }
if(lv5frm.hack.value!=lv5frm.attackme.value) { lv5frm.hack.focus(); return; }
 
lv5frm.submit();
 
}
</script>



여기서

nickname값이 없으면 다시 return

comment 또한 없으면 안되고

code값은 옆에 나와있는 값이어야 submit이 된다고 한다.

하지만 조건을 만족시켜도 안되는 것을 알 수 있었다.

그래서 보니 time:2가 있는 것을 알 수있었다.

아마 2분이나 2초 안에 해야하는 것 같다.

따라서 콘솔창에

lv5frm.id.value = "1"; lv5frm.cmt.value = "1"; lv5frm.hack.value = lv5frm.attackme.value;ck();

라고 치고 2초안에 해보니 성공!


20번도 클리어!!

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

Webhacking.kr 6번  (0) 2017.10.22
Webhacking.kr 4번  (0) 2017.10.22
Webhacking.kr 54번  (0) 2017.10.16
webhacking.kr 10번  (0) 2017.10.15
Webhacking.kr 12번  (0) 2017.09.24

+ Recent posts