일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 아파트실거래가
- 블라인드 인젝션
- webhacking.kr
- Lord of SQLInjection
- 부동산분석
- 전세
- 투자
- Blind Injection
- NOX
- Frida
- 호갱노노
- 후킹
- 월세
- jeb
- 매물
- APKManager
- 서울
- 모의해킹
- Mid()
- 프리다
- 안드로이드
- ADB
- 웹해킹
- 아파트
- Los
- SQL INJECTION
- 스마트폰
- 일기
- 부동산
- UnCrackable
- Today
- Total
일단 쓰고보자
[los] darkknight 본문
#문제
#문제 의도
- 입력 값 필터링 규칙 (no)
if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~");
if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe");
1) prob
2) _
3) .
4) ()
5) 싱글쿼터(')
6) substr
7) ascii
8) =
- 입력 값 필터링 규칙 (pw)
if(preg_match('/\'/i', $_GET[pw])) exit("HeHe");
$_GET[pw] = addslashes($_GET[pw]);
1) 싱글쿼터(')
2) addslashes() 함수는 싱글쿼터('), 더블쿼터("), \, NULL 문자 입력 시 문자 앞에 \를 붙여 일반 문자로 만든다.
- 목표
필터링을 사용하지 않거나 우회하여 admin 계정의 pw를 알아내면 해결.
#확인사항
- 싱글 쿼터(')를 잃은 상태에서는 입력 값이 숫자인 no를 공략하는 것이 좋을 것 같다.
- golem 문제의 필터링에서 추가로 ascii() 함수를 추가로 잃었다. ascii() 함수만 우회하면 어렵지 않게 풀 수 있을 것이다.
- "Hello admin" 문구를 확인하며 Blind Injection을 시도해보자.
1) length(pw)<>n // n=[pw 문자열 길이]
2) ascii() 함수가 사용되는 구문과 우회 방법은 아래와 같다. // 그냥 안 쓰면 된다.
ascii(mid(pw,n,1))<>m → mid(pw,n,1)<>char(m) // m=[pw n번째 문자의 ascii 코드]
※ char() 함수 사용할 때 주의할 점은 Mysql이 대소문자 구분을 하지 않는다는 것이다.
즉, mid(pw,1,1) 값이 'a' 라고 가정하면 'a'인 char(97)만 맞아야되는데 'A'인 char(65)도 참으로 나온다는 것.
- 위 Blind Injection 구문을 통해 알아낸 pw 문자열은 0b70ea1f
'모의해킹 > Lord of SQLInjection' 카테고리의 다른 글
[los] giant (0) | 2020.04.07 |
---|---|
[los] bugbear (0) | 2020.04.07 |
[los] golem (0) | 2020.04.07 |
[los] skeleton (0) | 2020.04.07 |
[los] vampire (0) | 2020.04.07 |