| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- XSS
- sql_injection
- 피자나눠먹기1
- 피자나눠먹기2
- 짝수는싫어요
- visualcode
- 프로그래머스
- XAMPP설치
- 리눅스마스터2급
- 파이썬
- 문제풀이
- 아파치
- PHP 개발환경
- 웹
- XAMPP
- 리눅스마스터
- 네트워크
- 중앙값구하기
- phpreg
- 피자나눠먹기3
- 드림핵
- 나머지구하기
- 웹해킹
- webhacking
- 리눅스
- 더 메뉴
- dreamhack
- OSI 7계층
- php
- web
- Today
- Total
목록전체 글 (43)
이것저것
문제 설명어딘가 이상한 로그인 서비스입니다.SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.chatGPT와 함께 풀어보세요!문제 화면문제 코드 분석로그인은 아래 코드에서 처리된다.userlevel = request.form.get('userlevel')res = query_db(f"select * from users where userlevel='{userlevel}'") 사용자가 입력한 userlevel 값이 SQL문에 그대로 삽입된다.예를 들어 0을 입력하면 실제 서버에서는 다음과 같은 SQL이 실행된다.SELECT * FROM users WHERE userlevel='0' 하지만 입력값을 조작하면 원하는 SQL 구문을 삽입할 수 있다...
문제 설명로그인 서비스입니다.SQL Injection 취약점을 통해 플래그를 획득하세요.플래그는 flag.txt, FLAG 변수에 있습니다.플래그의 형식은 DH{...} 입니다.문제 화면 문제 코드 분석로그인 기능은 아래 코드에서 처리된다.res = query_db(f'select * from users where userid="{userid}" and userpassword="{userpassword}"') 사용자가 입력한 userid 와 userpassword 값이 그대로 SQL 쿼리에 삽입되는 것을 확인할 수 있다.예를 들어 아래와 같이 입력하면userid = adminuserpassword = admin 실제로는 다음과 같은 SQL이 실행된다.select * from users where user..
문제 설명php로 작성된 페이지입니다.알맞은 Nickname과 Password를 입력하면 Step 2로 넘어갈 수 있습니다.Step 2에서 system() 함수를 이용하여 플래그를 획득하세요.플래그는 ../dream/flag.txt에 위치합니다.플래그의 형식은 DH{...} 입니다.문제 화면문제 코드 분석로그인 기능은 아래 코드에서 처리된다.$name = preg_replace("/nyang/i", "", $input_name);$pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw);if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") { 사용자가 입력한 input_name 과 ..
인터넷에서 데이터가 출발지에서 목적지까지 전달되려면, 중간의 라우터들이 "이 패킷을 다음에 어디로 보낼지"를 끊임없이 결정해야 합니다. 이 결정을 내리는 규칙이 바로 라우팅 프로토콜입니다.이 글에서는 대표적인 두 라우팅 프로토콜인 OSPF와 BGP가 각각 왜 등장했는지, 어떤 원리로 동작하는지, 그리고 실무에서 왜 지금까지도 표준으로 쓰이는지를 정리합니다.1. 라우팅 프로토콜이 왜 필요한가라우터가 딱 2~3대뿐이라면 관리자가 직접 "이 목적지는 이 경로로 가라"고 하나하나 수동으로 설정(Static Routing)해도 됩니다. 하지만 네트워크가 수십, 수백, 수천 대의 라우터로 커지면 문제가 생깁니다.라우터가 늘어날 때마다 모든 경로 정보를 수동으로 갱신해야 함회선 장애가 발생해도 관리자가 직접 알아채고..
문제 설명리눅스 명령어를 실행하는 웹 서비스가 작동하고 있습니다.해당 웹 서비스의 코드가 첨부파일로 주어집니다. flag.txt 파일을 찾아 출력하여 플래그를 획득하세요!문제 화면문제 코드 분석app.py를 확인하면 사용자가 입력한 값이 아래 코드에 그대로 삽입되는 것을 확인할 수 있다.user_input = request.form.get('user_input')cmd = f'echo $({user_input})'사용자가 입력한 값은 $( ) 안에 들어가며 쉘 명령어로 실행된다.예를 들어 입력창에 아래와 같이 입력하면ls실제로 서버에서는 다음 명령이 실행된다.echo $(ls)즉 사용자가 원하는 리눅스 명령어를 실행할 수 있는 Command Injection 취약점이 존재한다.파일 목록 확인먼저 입력창에..
문제 설명Not Friendly service... Can you switching the command? 서비스가 불친절하네요... 명령어를 바꿔주실 수 있나요?문제 화면 문제 코드 분석로그인 기능은 아래 코드에서 처리된다.$data = json_decode($_POST["username"]);$username = $data->username;사용자가 입력한 값을 JSON으로 파싱한 후 username 필드를 추출하는 것을 확인할 수 있다.예를 들어 아래와 같이 입력하면username 입력창: {"username": "admin"} 실제로는 다음과 같이 처리된다.$username = "admin"하지만 검증 로직에서 ===(엄격한 비교)와 switch(느슨한 비교)를 혼용하고 있기 때문에 타입을 조작하..
문제 설명로그인 시 계정의 정보가 출력되는 웹 서비스입니다.SQL Injection 취약점을 통해 플래그를 획득하세요.문제에서 제공된 init.sql 파일의 테이블명과 컬럼명은 실제 서버와 다릅니다.플래그 형식은 DH{...} 입니다.문제 화면문제 코드 분석로그인 기능은 아래 코드에서 처리된다.cur.execute(f"SELECT * FROM users WHERE uid='{uid}' and upw='{upw}';")사용자가 입력한 uid, upw 값이 그대로 SQL 쿼리에 삽입되는 것을 확인할 수 있다.예를 들어 아래와 같이 입력하면uid = adminupw = 1234실제로는 다음과 같은 SQL이 실행된다.SELECT * FROM usersWHERE uid='admin'and upw='1234';하지..
문제 설명Exercise: CouchDB에서 실습하는 문제입니다. 문제 화면 문제 코드 분석로그인 기능은 아래 코드에서 처리된다.app.post('/auth', function(req, res) { users.get(req.body.uid, function(err, result) { if (err) { console.log(err); res.send('error'); return; } if (result.upw === req.body.upw) { res.send(`FLAG: ${process.env.FLAG}`); } else { res.send('fa..