ReIzEi 2023. 4. 12. 18:09

오늘도 시작페이지부터 시작

 

 

 

뷰소스를 눌렀을때 나오는 코드 뭐가 줠라들 많다

 

하나씪 천천히 봐봅시다

 

preg_match 필터링인건 다들 아시죠

 

2, -, +, from, _, =, \s(이거맞나?), *, \ 를 필터링 합니다 (맞나?)

 

아무튼 우리가 val 파라미터에 전달해준 값이 $go로 들어가는데 필터링에 걸리면 Access Denied를 보게된다

 

 

 

 

여긴 처음에 뭔소린가했는데 그냥 저 5가지 select문중에 하나가 랜덤으로 실행된다고 보면된다

 

그리고 쿼리가 실패하면 nice try! 문구를 보게된다

 

 

이렇게

 

 

 

이제 문제를 어떻게해야 푸는지 알아야겠죠

 

 

위의 1일때 값은 볼거없고 쿼리결과가 2일때 문제가 풀리게 됩니다

 

고로 우리가 할 일은 쿼리 결과가 2가 나오게 하는것

 

 

 

 

덧셈뺼셈 및 뭐시기들 다 안되니까 나머지값을 구하는 8%3을 넣어본다

 

근데 안대요, 나로서는 이해할 수 없는 결과이기에 검색을 했더니 다들 이런 방법을 시도해봤더라

 

난 내가 똑똑한줄 알았는데 아닌갑다

 

결론은 테이블에 2가 없어서 제대로 조건을 맞춰도 조회할 수가 없는 것이었다.

 

하지만 테이블에 없어도 조회결과로 출력되게 할 수 있는 방법이 있다

 

UNION SELECT 다

 

뒤의 유니온셀렉트를 붙이게 되면 쿼리결과가 합쳐지므로 앞의 테이블에 없는 내용이어도 함께

 

결과로 출력되는 뭐 그런원리인갑다. 코런갑다하세요

 

 

수 많은 고민(검색아님)끝에 나온 결과물, 저 안에 char(50)은 모두 알겟지만 아스키2 이다

 

딱히 char50이 아니어도 아까 넣은 8%3 등 뭐든 2가 나오는 것 아무거나 넣어도된다

 

 

 

쿼리문에 넣으면 대충 저런식으로 돌아간다

 

 

바로 url에 발사해준다

 

 

여기서 이런점이 궁금할 수 있는데, 아까 5개의 쿼리중 랜덤으로 실행되는데 어떻게 맞추냐고 할 수 있다.

 

근데 5개중 랜덤으로 실행되는 것이니 그냥 5개중 아무거나에 맞게 넣어주고 새로고침을 줠라게누른다

 

 

 

 

그럼 풀린다