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 | 31 |
Tags
- C언어
- ImageBase
- SQL
- codeup
- 웹
- Cross Site Scripting
- 인공지능
- dsa
- 프로그래머스
- 알고리즘
- db
- 공개키
- SQL_Injection
- 머신러닝
- injection
- RVA
- 보안
- RSA
- Database
- ReflectedXSS
- 파일구조
- XSS
- 기계학습
- 코드업
- dvwa
- 암호학
- StoredXSS
- 디피헬먼
- 심층학습
- 딥러닝
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 |