old-07 풀이

2024. 2. 26. 17:02webhacking.kr

728x90

메인 페이지
view-source

go라는 변수에 val의 값을 GET 형태로 가져옵니다

그리고 go에 2, -, +, from, _, =, \s, *, \가 있는 경우, "Access Denied!"를 출력하면서 필터링을 해줍니다

그리고 rand 변수에 랜덤 값을 하나 뽑아서 넣어주고, rand의 값에 따라 조건문을 다르게 실행합니다

쿼리의 결과가 2인 경우에만 문제가 해결됩니다

SQL Injection 문제인 것으로 보입니다

쿼리의 결과를 2로 조작해야 하는데, 필터링 목록에 2가 있네요... 이걸 어떻게 우회하는지가 관건인 것 같습니다

 

if(preg_match("/2|-|\+|from|_|=|\\s|\*|\//i",$go)) exit("Access Denied!");

좀 더 보기 편하도록, 필터링 부분만 다시 가져와봤습니다

숫자 2 뿐만 아니라, 사칙연산도 싹 막아놨네요

그러면 연산자 중에서 쓸만한 건 %입니다

 

?val=[원하는 숫자 아무거나])union(select(5%3))%23

 

%를 활용하여 만든 쿼리입니다

UNION SELECT를 활용해서 만들었습니다

(뒤에 붙는 %23은 #입니다)

쿼리 맨 처음에는 원하는 숫자를 아무거나 넣어주면 되는데, 테이블에 존재하는 값이면 Access Denied가 뜹니다

안된다 싶으면 숫자를 바꿔서 계속 시도해 주시면 됩니다

 

URL
문제 풀이 성공

 

728x90

'webhacking.kr' 카테고리의 다른 글

old-56 풀이  (0) 2024.03.02
old-51 풀이  (0) 2024.02.28
g00gle1 풀이  (0) 2024.02.26
old-35 풀이  (0) 2024.02.19
old-41 풀이  (0) 2024.02.17