write-up(web)/LOS

[Lord of SQLInjection] orc write-up

ssongk 2022. 7. 30. 20:53

문제의 소스 코드입니다.

만약 id 값이 존재하면(쿼리의 결과가 참이면) Hello admin이 출력됩니다.

두 번째로 쿼리의 결과 값이 존재하면서 pw가 실제 데이터베이스의 pw값이랑 일치할 때 문제가 풀립니다.

blind sql injection을 통해서 pw 값을 찾아서 값을 넣어줘야 합니다.

pw에 임의의 값을 넣어서 false로 만들고 다른 조건을 뒤에 넣은 뒤 or로 연결시켜줍니다.

뒤의 조건이 true가 되면 Hello admin이 출력됩니다.

 

먼저 pw의 길이를 구한 뒤

1문자씩 무작위 대입을 통해 pw를 알아내겠습니다.

먼저 pw의 길이를 length() 함수를 통해 알아냅니다.

그런 뒤 substr() 함수를 통해 첫 번째 문자부터 1개씩 가져와서 무작위 대입으로 값을 알아냅니다.

만약 id를 'admin'으로 지정해주지 않으면 다른 계정의 pw를 검색하게 됩니다.

실행 결과 pw를 알게되었습니다.

해당 값을 url로 던져주면

문제가 풀립니다.