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
- docker compose
- Error Based SQL Injection
- Union SQL Injection
- XAVIS
- SQLi wargame
- Lord of SQLinjection
- Lord of SQL Injection
- str_replace함수
- ubuntu
- 가상머신 os
- btmp
- SQL i
- 1819 (HY000):
- LOS 5번
- UTM
- Python requests 설치
- utmp
- 2002(HY000)
- los.rubiya.kr
- mocOS
- 우분투
- sqli
- M2
- goblin 3번
- sql injection
- ModuleNotFoundError: No module named ‘requests’
- Kail Linux
- blind SQLi
- MySQL
- No module named ‘requests’
Archives
- Today
- Total
klaus
[Lord of SQL Injection] assassin 15번 본문
0. assassin
1. 전체 코드
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/\'/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_assassin where pw like '{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
if($result['id'] == 'admin') solve("assassin");
highlight_file(__FILE__);
?>
2. 중요 코드 분석
if(preg_match('/\'/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_assassin where pw like '{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
if($result['id'] == 'admin') solve("assassin");
1) preg_match함수를 통해 필터링
- '
- 대소문자 구분하지 않음
2) query를 보면 pw를 like구문을 통해 입력(GET) 받아 처리합니다.
6) 입력받은 id값이 admin이면 solve
3. solve
이번 문제의 핵심은 like구문을 통해 레코드에서 admin을 찾는 문제입니다.
Like구문
SELECT * FROM [테이블명] WHERE LIKE [조건] | |
% | 모든 문자 |
_ | 문자 하나 |
A% | A로 시작하는 모든 문자 |
%A | A로 끝나는 모든 문자 |
%A% | A를 포함하는 모든 문자 |
^A | A로 시작하지 않는 모든 문자 |
예) PW 값이 1234라고 가정할 때,
like 1%
like_2%
like__3% or %3%
like___4% or %4와 같이 검색할 수 있습니다.
그럼 문제로 넘어가서 pw=%사용한다면
그럼 _ 을 사용하여 pw의 레코드의 길이가 어떻게 되는지 보겠습니다.
pw=________ (8번) 사용했을 때 hello guest라는 문구가 나오는 것을 보아 pw의 길이는 8인 것을 알 수 있습니다.
그럼, pw를 하나씩 찾아보도록 하겠습니다.
스포주의!!
더보기
?pw=9%
?pw=90______
?pw=902_____
참고 :
https://coding-factory.tistory.com/114
'모의해킹 > Wargame' 카테고리의 다른 글
[Lord of SQL Injection] zombie_assassin 17번 (0) | 2022.12.29 |
---|---|
[Lord of SQL Injection] succubus 16번(feat. 싱글쿼터 우회) (0) | 2022.12.23 |
[Lord of SQL Injection] giant 14번 (feat. 공백 우회) (1) | 2022.12.21 |
[Lord of SQL Injection] bugbear 13번 (0) | 2022.12.21 |
[Lord of SQL Injection] darkknight 12번 (0) | 2022.12.16 |
Comments