일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 강화학습
- 벨만방정식
- HY7714
- 도커로 깃블로그 만들기
- 흥미붙이기
- AI
- TimeSeries
- 프로바이오틱스
- DL
- ML
- RL
- node.js
- DataProcessing
- 불법마약특별단속 #부산지방경찰청
- socket.io
- YOLO
- 오토트레이딩
- 프레딧
- transformer
- DLInear
- mlflow
- 제발쉽게좀가르치자
- de
- pandas
- express
- NLinear
- 강화학습으로주식하기
- MPRO
- 엠프로
- LTSF
- Today
- Total
목록Wargame (15)
상황파악
문제상황 이미지가 반쪽만 나타나는 상태 살펴보니 DH라는 플래그값이 잘려서 정상적으로 출력되지 않고 있다 대충봐서는 위로 드래그 해서 올리면 될 것 같은데 조작이 불가능하기 때문에 해결책을 찾아본다 이미지 파일 관련 문제는 대개 헥스값을 살펴보면 알 수 있었기 때문에 010 editor를 이용해 값을 살펴본다 PNG 파일의 시그니처를 확인할 수 있고, 이후에 IHDR과 IDAT이라는 단어를 볼 수 있다 이는 PNG 파일의 특징인데 PNG 파일은 기본적으로 데이터를 압축하여 분할 저장하는 방식을 따른다 이때 분할되는 데이터 단위를 청크(chunk)라고 하는데 파일의 크기에 따라 가변적이며 반드시 필요로 하는 청크가 3가지 존재한다 IHDR : Header - 이미지 크기, 필터링 방식, 압축 방식 정의 I..
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..