일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Los
- 아파트실거래가
- 후킹
- Mid()
- 아파트
- SQL INJECTION
- 프리다
- UnCrackable
- NOX
- 일기
- 투자
- Blind Injection
- 월세
- 안드로이드
- webhacking.kr
- 매물
- 전세
- 서울
- 웹해킹
- jeb
- 호갱노노
- 부동산분석
- 블라인드 인젝션
- ADB
- 부동산
- Frida
- Lord of SQLInjection
- APKManager
- 모의해킹
- 스마트폰
- Today
- Total
일단 쓰고보자
[los] zombie_assassin 본문
#문제
#문제 의도
- 입력 값 필터링 규칙 (공통)
$_GET['id'] = strrev(addslashes($_GET['id']));
$_GET['pw'] = strrev(addslashes($_GET['pw']));
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
1) prob
2) _
3) .
4) ()
5) addslashes() 함수는 싱글쿼터('), 더블쿼터("), \, NULL 문자 입력 시 문자 앞에 \를 붙여 일반 문자로 만든다.
6) strrev() 는 인자로 받은 문자열 순서를 반대로 리턴한다. 예를 들면, 'abc'를 넣으면 'cba' 리턴.
- 목표
strrev(addslashes()) 함수를 적절하게 우회하여 쿼리 결과가 존재하도록 만들면 해결.
#확인사항
- 어쨌든 싱글쿼터(')를 탈출해서 구문을 입력해야 할텐데, strrev() 함수는 문자열을 뒤집는다고 했다. 그런데 그 문자열로 addslashes()를 적용한 문자열을 넣는다고 하니... 어떤 구멍이 생길 것 같다. (우회하는 걸 방지하려고 했더니 뒤집고 앉았다.)
- 우선 쿼리 값을 참으로 만들기 위해서는 아래 쿼리가 필요하다. (목표 구문)
id='"\' and pw='or id in (0x61646D696E)#
- 입력 값에 따라 함수를 거쳤을 때의 변화를 살펴보자. 쿼리 결과에는 문자열로 취급되는 문자열을 빨간색으로 표시했다.
- 그 중 쿼리문을 원하는 방향으로 조작할 수 있는 입력 값은 더블쿼터(")가 되겠다.
- 더블쿼터(")를 사용해서 목표 구문을 만들기 위해선 아래와 같이 변수를 입력해면 된다.
id="&pw=%23)E696D64616x0( ni di ro
- 풀고 보니, addslashes() 함수와 strrev() 함수를 동시에 쓰는 사람이 있을까 싶다.
'모의해킹 > Lord of SQLInjection' 카테고리의 다른 글
[los] xavis (0) | 2020.04.24 |
---|---|
[los] nightmare (0) | 2020.04.10 |
[los] succubus (0) | 2020.04.08 |
[los] assassin (0) | 2020.04.08 |
[los] giant (0) | 2020.04.07 |