본문 바로가기

wargame39

lord of sql injection 4번 - orc 이제 익숙한 쿼리 구문을 바로 넣어봅니다. Hello admin이 나오네요. 그런데 코드를 보니 pw를 검증하는 구문으로 인해 실질적인 pw를 알아야 패스할 수 있을거 같네요. 우선 쿼리에 1=2라고 넣으면 Hello admin이 나오지 않네요. 즉, 거짓인 상황에서는 hello admin 메시지가 나오지 않고 참인 상황에서는 hello admin이 나오는 것이겠죠. (1=1 --+- 코드가 참이라는 뜻이니) 이런식으로 SQL 인젝션은 오류메시지를 활용해 해킹이 가능한 것입니다. 비밀번호를 알기 위해선 블라인드 sql 인젝션을 써야할거 같습니다. substr(pw,1,1) 함수는 pw 의 1번째 글자부터 1번째 글짜까지 추출하는 것입니다. 즉, pw의 첫번째 글자를 추출하겠죠. 이것을 추출해서 ascii.. 2023. 12. 21.
lord of sql injection 3번 - goblin 이번에는 no에 쿼리값을 넣어서 패스해야할 것으로 보입니다. preg match에 ' " 특수문자를 필터링했기 때문에 사용할수가 없겠네요 우선 no 값에 0을 넣어봤는데 아무 반응이 없네요 no 값에 1을 넣었더니 hello guest가 떴습니다. 이것이 id='guest' and no=1 인것을 보았을때 and 구문이 들어간다는 것은 계정마다 배정된 no가 있다는 것이고 guest의 no는 1인것을 알 수 있습니다. 그렇다면 admin의 no를 호출해야겠네요. 우선 id=admin이 될지 시도해봅니다. and no=0으로 뒤에 구문을 거짓으로 만들면 or 구문에 들어갈 쿼리문을 체크하겠죠 '를 hex 인코딩하여 0x27로 넣어봤지만 안되네요. 아무래도 no를 호출하는 방법으로 해야할것 같습니다. adm.. 2023. 12. 21.
lord of sql injection 2번 - cobolt pw에 md5가 붙어있어 해시를 풀어야하는지 고민했는데 이건 상관 없는 부분입니다. 2번 문제를 보니 밑에 result['id'] == 'admin' 이란 구문을 보니 id 값만 admin으로 넘겨주고 나머지 주석처리를 해주면 될거같네요. admin'--+- 를 넣어주니 해결 2023. 12. 21.