일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커로 깃블로그 만들기
- 오토트레이딩
- YOLO
- DataProcessing
- MPRO
- 제발쉽게좀가르치자
- NLinear
- ML
- DLInear
- HY7714
- TimeSeries
- 프레딧
- 프로바이오틱스
- 벨만방정식
- DL
- node.js
- 불법마약특별단속 #부산지방경찰청
- socket.io
- AI
- 강화학습
- mlflow
- 엠프로
- pandas
- de
- RL
- transformer
- 강화학습으로주식하기
- express
- LTSF
- 흥미붙이기
- Today
- Total
목록Wargame/Wechall (14)
상황파악
Wechall server에 내장되어 있는 PHPMyAdmin이라는 페이지를 찾아내는 문제입니다. 주어진 힌트라고는 PHPMyAdmin이라는 페이지는 관리가 계정들이 wechall의 DB를 관리하기 위한 페이지라는 것뿐인데요. 별다른 힌트 없이는 문제풀이가 굉장히 힘들어 보입니다. DB에 대한 언급이 있어서 Account에 들어가보기도 하고 Ranking에 들어가 보기도 하였지만 뚜렷한 방도를 찾지 못하였습니다. 다시 문제로 돌아와 드래그를 해보니 숨겨두었던 문구가 출력되었습니다. 힌트가 필요없을거라는 말이 적혀있습니다. 문제 제작자가 장난을 좋아하는 듯 보입니다. 문제 좌측상단의 ? (뮬음표) 표시를 클릭해보면 문제에 대한 질문 리스트를 볼 수 있습니다. 이미 여러 게시글이 올라와 있는 상황입니다. 문..
LFI 취약점이 존재한다고 합니다. LFI가 뭘까요? Local File Inclusion 의 약자로 해석하자면 서버에 존재하는 파일을 읽어 들이는것을 말합니다. 단순히 url에 경로를 포함하는 문장을 사용자의 입력을 받는 곳으로 담아 보낼때 특별한 입력에 대한 검증이 없으면 서버의 파일에 접근 가능한 취약점을 뜻합니다. 먼저 문제에 LFI 취약점을 사용하라고 하니 입력값에 대한 검증은 없는 것으로 추측되고 입력값을 어디에 넣는지 알아야 합니다. 다행히 코드를 공개를 하여 입력을 받는 부분을 알 수 있습니다. 'which'라는 변수에 사용자의 입력값을 받는데 아래의 switch문을 통해 값에 대한 처리를 함을 알 수 있습니다. case뒤에 오는 값을 보니 정수값입니다. 이때 키포인트는 switch문은 정..
위 글을 정리하자면 예시 사이트가 있고 한 사람이 접속할 때 마다 hi라는 메시지를 전송하는데 누적 접속인원이 0xfffbadc0ded명 일 때 메시지 전송횟수를 구하는 문제입니다. 아래 추가적인 내용은 1분에 1명씩 접속하는 가정에 한번 보낸 사람한테도 누적으로 보낸다는 말입니다. 문제 이해부터 어렵습니다. 0xfffbadc0ded는 10진수로 변경하면 17591026060781 입니다. 대략 17조 정도입니다. 차후 설명을 위해 max라는 변수명으로 칭하겠습니다. 처음에 별 생각없이 for문으로 sum += i 반복문을 진행했는데 하루종일 걸려도 끝날 기미가 보이지 않길래 예전 수학시간에 배운 기억을 더듬어 봤습니다. 1씩 증가하는 수들을 합을 구하는 문제니까 등차수열 합을 사용하면 됩니다. S(n)..
이전의 MySQL I 보다 업그레이 된 버전입니다. 어떤 게 추가되었는지 확인해보겠습니다. 쿼리문에서 password를 받지 않고 md5로 변환한 값을 비교하는군요 해결조건은 md5로 암호화된 패스워드를 맞추고 username에 admin이 있어야 합니다. password에 암호화가 걸리면 보통 쿼리문에서 주석처리를 해주는데 이번 문제는 그러한 접근이 불가능 하니 db의 구성도를 알 필요가 있습니다. 이번 문제는 총 3개의 포인트가 있습니다. 처음 DB를 다루는 사람의 눈높이에서 설명하기 위해 MySQL 실습을 통해 설명을 돕겠습니다. 설명을 위해 간단하게 제작된 sample 테이블입니다. column은 username과 password가 있습니다. 위에 입력된 SELECT * FROM (table na..
기본적인 SQL Injection 문제 입니다. 먼저 쿼리문 부터 확인해보겠습니다. 먼저 Solved 조건은 username이 admin이면 됩니다. 쿼리문을 보겠습니다. $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; 간단하네요 password를 and로 받기 때문에 username에서 쿼리를 마무리 해줍니다. admin' # 이렇게 하면 # 뒤의 쿼리문은 주석처리가 되기 때문에 사실상 $query = "SELECT * FROM users WHERE username='admin' 으로 처리가 됩니다. 따라서 문제를 해결할 수 있습니다.
웹 크롤링을 하는 문제입니다. this link를 누르게 되면 다음과 같이 값이 나오게 됩니다. 이걸 그대로 https://www.wechall.net/challenge/training/programming1/index.php?answer=the_message 위 링크로 옮기는 문제입니다. 이때 조건이 1.337초 안에 정리되어야 한다는 것입니다. 파이썬 코드로 크롤링을 하고, 가져온 값을 requests 해줍니다. import requests cookie = {'WC':'Cookie값'} req = requests.get("https://www.wechall.net/challenge/training/programming1/index.php?action=request",cookies=cookie) url..
이번 문제는 아래 나와있는 숫자를 해독하는 것입니다. Note: The message is most likely in english. Note를 통해 해당 숫자들이 아스키값을 나타내고 있음을 추측할 수 있습니다. 하지만 숫자는 총 441개로 8자리인 아스키 값의 배수가 될 수 없습니다. 441은 7로 나눠질 수 있다른 것을 알아낸 후, 값의 변화를 주지 않게 맨 앞에 0을 붙여 8자리로 만들어줍니다. 이제 만들어진 8자리를 아스키 값으로 변경해야 하는데 저번 문제와 마찬가지로 코딩을 통해 해결합니다. text = '10101001101000110100111100110100000111010011001011111000111010001000001101001111001101000000110111010110111..
이번 문제의 목표는 소수를 찾는 것입니다. 하지만 조건이 2개 있는데요 첫번째는 1000000 (백만) 이상의 숫자부터 찾는 것과 두번째는 각 자리수의 합이 소수인 것 입니다. 자리수가 크기 때문에 손으로 계산하기엔 무리라 생각하여 코딩을 하였습니다. 파이썬으로 해도 되지만 오랜만에 C로 코딩을 해보았습니다. #include #include #include #pragma warning(disable : 4996) // 소수 판별 int isprime(int number) { if (number == 4) { return false; } for (int i = 2; i> 0.004000 작업시간은 오래 걸리지 않았습니다. 이번문제의 정답은 10000331000037 였습니다.