일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 투자
- 후킹
- Lord of SQLInjection
- webhacking.kr
- 일기
- SQL INJECTION
- 월세
- NOX
- 매물
- 모의해킹
- 안드로이드
- Blind Injection
- 아파트실거래가
- 블라인드 인젝션
- APKManager
- 웹해킹
- 전세
- Frida
- ADB
- 서울
- 아파트
- 스마트폰
- 호갱노노
- Mid()
- jeb
- 부동산분석
- UnCrackable
- Los
- 프리다
- 부동산
- Today
- Total
일단 쓰고보자
[los] golem 본문
#문제
#문제 의도
- 입력 값 필터링 규칙 (공통)
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe");
$_GET[pw] = addslashes($_GET[pw]);
1) prob
2) _
3) .
4) ()
5) or
6) and
7) substr(
8) =
- 목표
필터링을 사용하지 않거나 우회하여 admin 계정의 pw 값을 구하면 해결
#확인사항
- prob, _ 문자는 테이블 접근하지 못하도록 걸어둔 것 같고, ()는 특정 함수 쓰지 못하게 걸어둔 것 같다.
- 필터링 보면 or, and, substr( 을 걸어둔 것을 보면 저 문자 없이 Blind Injection 할 수 있는지 물어보는 것 같다.
- 이전 문제에서 or, and 는 우회를 해봤으나, substr() 함수와 = 문자를 우회할만한게 있는지 살펴보자.
1) or → ||
2) and → &&
3) substr() → mid() // substr() 함수와 mid() 함수는 용례가 같고, left(), right() 함수는 조건이 맞으면 대체할 수 있다.
4) = → <> // equal 문자를 not equal 로 대체해서 쓸 수 있다. 단지 출력 값이 반대로 나오니 그 점만 주의.
- Blind Injection을 위한 기본 구문과 조건문 2가지
※ orc 문제와 다른 점은 쿼리에 id가 guest 로 지정되어 있어서 쿼리 결과가 admin의 pw가 되도록 쿼리를 더 수정해야한다는 것.
pw='123' or id in (0x61646D696E) && [조건문]#
1) length(pw)<>n // n=[pw 문자열 길이]
2) ascii(mid(pw,n,1))<>m // m=[pw n번째 문자의 ascii 코드]
※ 조건문이 참이라면 "Hello admin"을 출력해 줄 것이고, 거짓이면 아무것도 출력하지 않을 것이다.
※ 이번엔 = 대신 <> 문자를 썼으니 반대로 "Hello admin" 문구가 나오지 않는 경우를 참으로 간주한다.
※ 위 처럼 일부 노가다가 필요한 상황이 있으므로, 웹 프록시 도구 Burp Suite 기능인 Intruder를 이용하도록 하자.
- 위 구문을 통해 웹 프록시 도구(Burp Suite) Intruder를 통해 얻은 정답은 아래와 같음.
'모의해킹 > Lord of SQLInjection' 카테고리의 다른 글
[los] bugbear (0) | 2020.04.07 |
---|---|
[los] darkknight (0) | 2020.04.07 |
[los] skeleton (0) | 2020.04.07 |
[los] vampire (0) | 2020.04.07 |
[los] troll (0) | 2020.04.07 |