일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UnCrackable
- NOX
- Frida
- 스마트폰
- 월세
- 호갱노노
- 부동산분석
- Los
- 매물
- 웹해킹
- 모의해킹
- 아파트실거래가
- 아파트
- SQL INJECTION
- 부동산
- Blind Injection
- 투자
- Lord of SQLInjection
- APKManager
- 후킹
- 일기
- 프리다
- webhacking.kr
- 안드로이드
- ADB
- jeb
- 블라인드 인젝션
- 서울
- Mid()
- 전세
- Today
- Total
목록Lord of SQLInjection (21)
일단 쓰고보자
#문제 #문제 의도- 입력 값 필터링 규칙 (pw)if(preg_match('/\'/i', $_GET[pw])) exit("No Hack ~_~" 1) 싱글쿼터(')- 목표싱글쿼터(')를 우회하거나 like 구문을 활용해서 admin의 pw를 알아내자. #확인사항- 싱글쿼터(') 우회하는 방법은 입력 구문이 2개인 경우에나 해볼 수 있을 것 같으니 like 구문을 공략해 볼 예정이다.- 우선 like 구문의 경우, '%' 혹은 '_' 을 사용하게 되면 모든 것을 검색한다. Linux의 아스테리크(*)와 같다.- 그럼 이제 문자 하나씩 알아보는 방법을 찾아보자. 만약 패스워드가 'abc' 라면 순차적으로 아래와 같이 진행한다. 1) ?% → ? 에 문자 하나씩 넣어가며 a 발견 2) a?% → ? 에 문자..
#문제 #문제 의도 - 입력 값 필터링 규칙 (shit) if(strlen($_GET[shit])>1) exit("No Hack ~_~"); if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); 1) 입력 값 길이가 1보다 크면 안 된다. 2) 공백 3) \n 4) \r 5) \t - 목표 필터링을 우회하여 공백을 입력하자. #확인사항 - 공백 우회는 wolfman 문제에서 풀어보았다. - 공백을 대체할 수 있는 문자를 다시 한 번 정리해보자. 1) %09 // tab → \t 필터링 2) %0a // line feed → \n 필터링 3) %0b // vertical tab 4) %0c // form feed 5) %0d // carriage retu..
#문제 #문제 의도 - 입력 값 필터링 규칙 (no) if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe"); 1) prob 2) _ 3) . 4) () 5) 싱글쿼터(') 6) substr 7) ascii 8) = 9) or 10) and 11) 공백 12) like 13) 0x - 입력 값 필터링 규칙 (pw) if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); $_GET[pw] = addslashes($_GET[pw]); 1) 싱글쿼터(') 2) addsla..
#문제 #문제 의도 - 입력 값 필터링 규칙 (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 문자 입력 시 문자 앞에 \를 ..
#문제 #문제 의도 - 입력 값 필터링 규칙 (공통) 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( 을 걸어..
#문제 #문제 의도 - 입력 값 필터링 규칙 (pw) if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 1) prob 2) _ 3) . 4) () - 목표 필터링을 사용하지 않거나 우회하여 쿼리 결과 id가 admin이면 해결 #확인사항 - prob, _ 문자는 테이블 접근하지 못하도록 걸어둔 것 같고, ()는 특정 함수 쓰지 못하게 걸어둔 것 같다. - 쿼리문 맨 뒤에 and 1=0 구문이 있는걸로 보아, pw 값으로 어떤 것을 넣어도 거짓이 되도록 셋팅했다. - 그런데 주석(#)이나 싱글쿼터('), or, and 등등 살아있는 문자가 많아서 우회하는 건 쉬울 것으로 보인다. - 이 문제 포함 앞 몇 문제가 정말 간단한 개념만으로 ..