안녕하세요??
자운대 고라니입니다.
오늘은 wargame.kr old-35번 문제를 풀어보겠습니다.
문제의 첫 화면이다. 간단하게 phone을 적으라는 text박스가 있다.
일단 view-source를 이용하여 소스코드를 확인해봤다.
소스코드 중 중요한 부분을 캡처하였다.
일단 phone에 아무런 값을 넣어봤는데,
위의 사진처럼 id=guest로 고정돼있다.
풀이의 조건은 phone에 어떠한 값을 넣으면 insert into chall35(id,ip,phone) value..... 를 이용하여 데이터베이스에 값을 저장한 후, id=admin and ip=myip 라는 값을 가진 데이터가 있다면, 문제가 풀린다.
하지만 preg_match와 strlen 함수를 활용하여서 id에는 'admin'이란 값을 넣을 수 없게 되었기에 정상적인 경로로
'admin'을 넣을 수는 없다고 판단되었다.
이럴때는 insert부분의 취약점을 활용하여 id='admin'이라는 값을 넣을 수 있다.
데이터를 insert 할 때 , 을 활용하여 두개의 데이터를 동시에 넣을 수 있다.
ex) insert into DB(id,pw) values('admin', '1234'),('guest', '4321) -> ('admin', '1234'),('guest', '4321) 둘 다 들어감
위와 동일한 방식으로 쿼리문을 만들어보자.
$_GET['phone']은 preg_match에 의한 필터링이 제대로 안돼 있다는 것을 확인할 수 있다.
이를 활용해서 injection을 시도해봤다.
"select ip from chall35(id,ip,phone) values('guest', 'myip', $_GET['phone'])"
"select ip from chall35(id,ip,phone) values('guest', 'myip', 1234),('admin', 'myip', 4321)"
즉 1234),('admin', 'myip', 4321를 phone에 넣으면 'admin'이란 값을 테이블에 넣을 수 있다.
확인해봤다.
문제가 풀렸다.
처음 푸는 사람이라면 score가 올라간 것을 확인할 수 있다.
'category > 웹해킹(webhacking.kr)' 카테고리의 다른 글
웹해킹(webhacking.kr) - 28번 (0) | 2023.02.16 |
---|---|
웹해킹(webhacking.kr) - 74번 g00gle1 (0) | 2023.02.15 |
웹해킹(webhacking.kr) - 56번 (4) | 2023.02.15 |
웹해킹(webhacking.kr) - 8번 (0) | 2023.02.14 |
웹해킹(webhacking.kr) - 40번 (0) | 2020.11.26 |
webhacking 기본 (0) | 2020.11.24 |
웹해킹(webhacking.kr) - 27번 (0) | 2020.11.24 |
웹해킹(webhacking.kr) - 24번 (0) | 2020.11.21 |
댓글