Today I Learned …
[Lord of SQL Injection] 5번 wolfman 풀이 본문
* 개인적인 공부 내용을 기록한 글입니다.
사담
오늘도 워게임!
이전 문제
https://choco4study.tistory.com/92
5번 문제 wolfman 분석 및 풀이
5번 문제는 다음과 같다.
preg_match로 공백 문자를 필터링하고 있음을 알 수 있다.
쿼리문 삽입 시 공백을 적절한 문자로 대체해주어야 한다.
먼저, solve 조건은 다음과 같다.
if($result['id'] == 'admin') solve("wolfman");
fetch된 레코드의 id가 admin일 시 문제가 풀리게 됨을 알 수 있다.
다음은 쿼리문을 보겠다.
$query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'";
admin을 fetch 해주려면
id='guest' and pw='' 로 첫번째 조건을 닫아준 후,
or id='admin' 으로 id가 admin인 레코드를 뽑아주면 된다.
즉, 주입해야할 쿼리문은
' or id='admin
이다.
그런데 이 문제에서는 파라미터에 공백이 포함되어있을 시 접근을 제한하고 있기 때문에,
앞서 인지했던 것처럼 공백을 다른 문자로 대체해주어야 한다.
공백 필터링 우회를 위한 적절한 대체 문자의 예시는 다음과 같다.
① Tab : %09
② \n : %0a
③ \r : %0d
④ 주석 : /**/
⑤ 그 외
이 중 Tab을 선택해 최종 주입할 쿼리문을 정했다.
'%09or%09id='admin
엔터를 쳐보면!
다섯번째 문제가 풀렸다!
'Wargame > Lord of SQL Injection' 카테고리의 다른 글
[Lord of SQL Injection] 7번 orge 풀이 (0) | 2021.12.07 |
---|---|
[Lord of SQL Injection] 6번 darkelf 풀이 (0) | 2021.12.07 |
[Lord of SQL Injection] 4번 orc 풀이 + Blind SQLi 자동화 Python 코드 (0) | 2021.12.05 |
[Lord of SQL Injection] 3번 goblin 풀이 (0) | 2021.12.03 |
[Lord of SQL Injection] 2번 cobolt 풀이 (0) | 2021.10.31 |
Comments