웹/웹 보안

webhacking.kr 18번 문제

비니화이팅 2018. 9. 6. 16:39

이번 문제는 SQL Injection문제네요!! 제가 제일 어려워하는 SQL Injection...호덜덜!


우선 index.phps를 들여다봅시다!

여러 문자들을 필터링하고 no hack이라고 출력하고있네요. 그렇다면 저 문자들은 패스!

쿼리의 결과가 guest면 hi guest를 출력하고, admin이라면 해결이 되는것 같네요

그럼 관건은 쿼리의 결과를 admin으로 만들어 줘야하는것!


1을 넣어보았습니다. 결과로 hi guest가 나오네요

select id from challenge18_table where id='guest' and no=1 쿼리가 날라갔겠네요


계정이 guest와 admin두 개만 있다면 테이블이 아래와 같을 거라고 예상할 수 있습니다.

guest 

admin 

혹은

admin

guest


이걸 가지고 쿼리문을 만들어봅니다.

select id from challenge18_table where id='guest' and no=123 or no=? 는 어떨까요?

앞의 연산을 False로 만들고 뒤의 연산을 True로 만들어 버리는 겁니다!

admin의 no가 무엇인지 모르니 둘 다 해봅시다!

select id from challenge18_table where id='guest' and no=123 or no=0

select id from challenge18_table where id='guest' and no=123 or no=2


공백은 위의 소스코드에서와 같이 필터링 하기 때문에 %0a를 사용해줍니다

요롷게! no은 2였네요!



해결 완료^~^