위는 Challenge 47의 초기 화면이다.

 

send버튼을 눌렀을 때 아래와 같이 메일이 발송되었다는 문구가 떴다.

 

SMTP는 이메일을 보내기 위해 이용하는 프로토콜이다.

해당 문제는 메일과 관련된 취약점인 SMTP Header Injection을 이용하였다. 이는 cc와 bcc를 이용하여 지정한 이메일로 메일을 전송해준다.

 

코드는 다음과 같았다.

줄바꿈이 가능하도록 하기 위해 input을 textarea로 변경해주었다.

 

바꿔주었던 textarea에 

Flag

Bcc: 이메일주소

를 적어서 send버튼을 눌러주었다.

 

이를 통해 문제를 해결할 수 있었다.

 

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

[webhacking.kr] Challenge 36  (1) 2022.11.19
[webhacking.kr] Challenge 23  (0) 2022.11.12
[webhacking.kr] Challenge 27  (0) 2022.10.09
[webhacking.kr] Challenge 25  (0) 2022.10.02
[webhacking.kr] Challenge 19  (0) 2022.09.24

shit는 공백, \n, \r, \t가 필터링되어 있으며, 길이가 1보다 길면 안된다.

이 필터링을 우회하기 위해 %0b, %0c와 같은 문자를 이용해보자

 

?shit=%0b 를 입력해주었더니 다음과 같이 문제를 해결할 수 있었다.

'Web Hacking > Lord of SQL Injection' 카테고리의 다른 글

[Lord of SQL Injection] succubus  (0) 2022.11.19
[Lord of SQL Injection] assassin  (0) 2022.11.12
[Lord of SQL Injection] Bugbear  (0) 2022.10.09
[Lord of SQL Injection] darkknight  (0) 2022.10.02
[Lord of SQL Injection] Golem  (0) 2022.09.24

위는 natas22의 초기화면이다.

 

아래 코드는 View sourcecode를 통해 확인해주었다.

<?php
session_start();

if(array_key_exists("revelio", $_GET)) {
    // only admins can reveal the password
    if(!($_SESSION and array_key_exists("admin", $_SESSION) and $_SESSION["admin"] == 1)) {
    header("Location: /");
    }
}
?>


<html>
<head>
<!-- This stuff in the header has nothing to do with the level -->
<link rel="stylesheet" type="text/css" href="http://natas.labs.overthewire.org/css/level.css">
<link rel="stylesheet" href="http://natas.labs.overthewire.org/css/jquery-ui.css" />
<link rel="stylesheet" href="http://natas.labs.overthewire.org/css/wechall.css" />
<script src="http://natas.labs.overthewire.org/js/jquery-1.9.1.js"></script>
<script src="http://natas.labs.overthewire.org/js/jquery-ui.js"></script>
<script src=http://natas.labs.overthewire.org/js/wechall-data.js></script><script src="http://natas.labs.overthewire.org/js/wechall.js"></script>
<script>var wechallinfo = { "level": "natas22", "pass": "<censored>" };</script></head>
<body>
<h1>natas22</h1>
<div id="content">

<?php
    if(array_key_exists("revelio", $_GET)) {
    print "You are an admin. The credentials for the next level are:<br>";
    print "<pre>Username: natas23\n";
    print "Password: <censored></pre>";
    }
?>

<div id="viewsource"><a href="index-source.html">View sourcecode</a></div>
</div>
</body>
</html>

$_GET에 revelio라는키가 있으면 natas23의 비밀번호를 획득할 수 있다.

burp suite로 location을 변경해보자.

 

먼저 location을 변경하지 않은 상태는 아래와 같았다.

 

위치를 revelio로 변경한 후의 burp suite는 아래와 같았으며, response에서 natas23의 비밀번호를 찾을 수 있었다.

 

|qjA8cOoKFTzJhtV0Fzvt92fgvxVnVRBj

'Web Hacking > Natas' 카테고리의 다른 글

[Natas] Level 23 > Level 24  (0) 2022.11.19
[Natas] Level 22 > Level 23  (0) 2022.11.12
[Natas] Level 20 > Level 21  (0) 2022.10.09
[Natas] Level 19 > Level 20  (0) 2022.10.02
[Natas] Level 18 > Level 19  (0) 2022.09.24

n=int(input())
cnt=0
for i in range(1, n+1):
    arr=list(map(int, str(i)))
    if i<100 : cnt+=1
    elif arr[0]-arr[1]==arr[1]-arr[2]: cnt+=1
print(cnt)

<코드 설명>

양수 n을 입력받아주었다. 그리고 cnt의 초기값을 0으로 설정해주었다.

 

숫자를 자릿수 기준으로 나누기 위해 i를 먼저 문자열로 바꿀 수 있도록 str(i)로 바꿔주었다.

문자열로 되어있는 각 자릿수를 정수로 바꿔주기 위해 map(int, str(i))를 작성해주었다.

이를 list로 바꾸기 위해 list(map(int, str(i))) 라고 작성해주었다.

 

i가 100보다 작은 경우, 항상 한수이므로 cnt값을 증가시켜주었다.

그렇지 않으면 각 자리수가 등차수열의 경우인 arr[0]-arr[1]==arr[1]-arr[2]일 때 cnt값을 증가시켜주었다.

이렇게 구한 cnt값을 출력해주었다.

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 16499 동일한 단어 그룹화하기  (0) 2022.11.06
[BOJ] 13417 카드 문자열  (0) 2022.11.06
[BOJ] 2776 암기왕  (0) 2022.10.09
[BOJ] 9322 철벽 보안 알고리즘  (0) 2022.10.09
[BOJ] 1463 1로 만들기  (0) 2022.10.02

+ Recent posts