250x250
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 |
Tags
- 암호학
- codeup
- ReflectedXSS
- db
- 웹
- 디피헬먼
- 머신러닝
- C언어
- ImageBase
- 공개키
- 심층학습
- 보안
- injection
- 인공지능
- 기계학습
- Cross Site Scripting
- SQL
- 알고리즘
- XSS
- 프로그래머스
- 파일구조
- RSA
- StoredXSS
- Database
- dvwa
- dsa
- RVA
- 코드업
- SQL_Injection
- 딥러닝
Archives
- Today
- Total
Ye0ngJae
[HackCTF] "Login" 문제풀이 본문
728x90
문제
풀이
더보기


로그인을 하면 Flag 값을 볼 수 있는 것 같습니다.
<?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");
}
?>
소스코드를 보면 id와 pw를 받은 후 pw를 sha256 해쉬로 암호화 합니다. 그리고
SELECT * FROM jhyeonuser WHERE binary id='$id' AND pw='$pw'
라는 내용의 SQL 쿼리문으로 DB에 전달합니다. 위 코드에서 입력값에 별다른 검증이 없는 것을 확인할 수 있습니다. 라는 것은 위 SQL 쿼리문 문자열에서 이스케이프하여 뒤 구문을 주석으로 만들어버리면 로그인이 이루어질 것입니다. 따라서
id에
admin'#
라는 내용의 값을 넣고 pw에 아무 값이나 넣고 로그인을 진행하면


SQL Injection이 성공하여 Flag 값이 출력되는 것을 확인할 수 있습니다.
728x90
'정보보안 > 워게임' 카테고리의 다른 글
[HackCTF] "Home" 문제풀이 (0) | 2022.03.08 |
---|---|
[HackCTF] "Input Check" 문제풀이 (0) | 2022.03.08 |
[HackCTF] "Read File" 문제풀이 (1) | 2022.03.08 |
[HackCTF] "Guess me" 문제풀이 (0) | 2022.03.08 |
[HackCTF] "보물" 문제풀이 (0) | 2022.03.08 |