728x90
반응형
7번 문제는 auth 버튼 하나가 전부이다.
view source를 눌러보자
php 코드가 쫘아악 나온다. 간단하게 정리하면
- get 방식으로 val 파라미터를 전달받는다
- 1~5 사이의 정수를 랜덤으로 뽑아, 괄호의 개수를 정해 SQL select 문을 실행한다.
- SQL query의 결과가 2면 문제가 풀린다.
파라미터를 전달받으며, SQL select문을 실행하고, query결과의 조작이 필요하다...
SQL Injection 문제임이 틀림없다.
하지만 주의해야 할 점이 바로 이 구문에 있다.
preg match로 몇가지 문자들을 필터링 해 두었는데, Injection을 하게 어렵게 하는 항목은 아래와 같다.
- 2 : 결과값을 2로 만들어야 하는데, 2 자체를 필터링 해 두었다.
- -, +, /, * : 사칙연산을 싸그리 막아두었다. 2를 사칙연산을 통해 만들지 못하도록 만들려고 한 것 같다.
- \s : 공백을 못쓰게 막아두었다.
그래서 내가 선택한 우회 방법은 바로 나머지 즉 % 이다.
payload는 133)union(select(5%3) 이다. 요걸 설명하자면
- 133은 그저 table에 없을 것 같은 값을 임의로 넣으면 된다. 첫 조건을 false로 만들어 결과값이 나오지 않게 하기 위함이다.
- union select를 이용하여 결과 값을 조작하기 위함이다.
- 5%3은 5를 3으로 나눈 나머지, 즉 2라는 값을 얻기 위함이다.
- 공백 대신 괄호를 이용해 공백 필터링을 우회했다.
자 그러면 요렇게 만들어서 보내면 바로 풀리느냐?
그건 아니다.
random하게 정수를 뽑아 괄호의 개수를 정하기에 내가 원하는 괄호의 개수가 나올때 까지 시도해주어야 한다.
내 payload는 괄호 1개를 이용했기 때문에, random값이 1이 나오면 풀리게 된다.
끄읕
728x90
반응형
'Webhacking > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-09번 문제 풀이 (0) | 2021.01.08 |
---|---|
[Webhacking.kr] old-08번 문제 풀이 (2) | 2021.01.03 |
[Webhacking.kr] old-04번 문제 풀이 (0) | 2021.01.03 |
[Webhacking.kr] old-06번 문제 풀이 (0) | 2021.01.02 |
[Webhacking.kr] old-05 풀이 (1) | 2021.01.02 |