접속해보면 hi guest 라는 문구와 함께 view-source가 있다. view-source를 클릭해 php 소스를 확인해본다.
$agent는 USER_AGENT에 관한 데이터고, $ip는 현재 User가 접속한 IP를 뜻한다. $agent에 from은 preg_match에 의해 필터링 됐다.
if($ck) 분기문에서 admin id로 로그인했을 시 문제가 풀리는 걸 확인할 수 있다.
if(!$ck) 분기문에서 insert into를 활용해 agent, ip, id 값을 value로 DB에 넣는 것을 확인할 수 있다.
$ip의 값은 조작할 수 없으므로 $agent 값을 proxy를 활용해 SQL INJECTION 문으로 변형해야한다.
agent에 qwer', '내 IP', 'admin')#' 를 넣는다고 가정해본다. (IP는 구글에 "내 IP" 라고 검색하면 나온다.
기존 쿼리문 : "insert into chall8(agent,ip,id) values('{$agent}','{$ip}','guest')"
SQL INJECTION문 : "insert into chall8(agent,ip,id) values('qwer', '내 IP', 'admin')#' ','{$ip}','guest')"
"insert into chall8(agent,ip,id) values('qwer', '내 IP', 'admin')
즉 agent = qwer, ip = 내 IP, id = admin이라는 데이터가 DB에 저장된다.
proxy를 활용해 User-Agent 값을 변경한다.
이 후 intercept is off로 바꾸면
done! (1/70) 즉 id= admin으로 된 데이터가 저장됐다. 이를 테이블로 표현하면 아래와 같다.
agent | ip | id |
qwer | 내 IP | admin |
solve 함수를 실행하기 위해 id=admin이라는 계정으로 로그인해야한다.
$_SERVER['HTTP_USER_AGENT'] 는 User-Agent를 뜻하므로 User-Agent에 qwer을 대입하면 admin 계정으로 로그인하게된다.
'category > 웹해킹(webhacking.kr)' 카테고리의 다른 글
웹해킹(webhacking.kr) - 9번 (0) | 2023.02.17 |
---|---|
웹해킹(webhacking.kr) - 28번 (0) | 2023.02.16 |
웹해킹(webhacking.kr) - 74번 g00gle1 (0) | 2023.02.15 |
웹해킹(webhacking.kr) - 56번 (4) | 2023.02.15 |
웹해킹(webhacking.kr) - 35번 (0) | 2020.11.30 |
웹해킹(webhacking.kr) - 40번 (0) | 2020.11.26 |
webhacking 기본 (0) | 2020.11.24 |
웹해킹(webhacking.kr) - 27번 (0) | 2020.11.24 |
댓글