Season 1/워게임 [Webhacking.kr] Old - 8 Write Up 작성자 - LRTK 특별한 반응이 없어서 코드를 확인하였다. $agent=trim(getenv("HTTP_USER_AGENT")); $ip=$_SERVER['REMOTE_ADDR']; if(preg_match("/from/i",$agent)){ echo("<br>Access Denied!<br><br>"); echo(htmlspecialchars($agent)); exit(); } 접속한 브라우저와 공인 ip를 각각 agent, ip 변수에 넣어줬다.Agent 변수는 preg_match 함수로, from문자열이 있는지 검사하였다.만약 있다면, Access Denied! 문구와 agent에 있는 특수문자가 HTML 엔티티로 변환된 문자열을 페이지에 출력하고, 종료한다. $db = dbconnect(); $count_ck = mysqli_fetch_array(mysqli_query($db,"select count(id) from chall8")); if($count_ck[0] >= 70){ mysqli_query($db,"delete from chall8"); } Chall8 테이블에 ID 컬럼의 총 갯수를 count_ck 변수에 넣어줬다.만약 count_ck 변수의 값이 70개 이상이라면, chall8 테이블은 삭제된다. $result = mysqli_query($db,"select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'"); $ck = mysqli_fetch_array($result); if($ck){ echo "hi <b>".htmlentities($ck[0])."</b><p>"; if($ck[0]=="admin"){ mysqli_query($db,"delete from chall8"); solve(8); } } if(!$ck){ $q=mysqli_query($db,"insert into chall8(agent,ip,id) values('{$agent}','{$ip}','guest')") or die("query error"); echo("<br><br>done! ({$count_ck[0]}/70)"); } select id from chall8 where agent=접속한 브라우저로 나온 결과가 없다면, 테이블에 agent, ip 변수를 삽입한다.만약 결과가 있고, 그 결과가 admin이면 Flag를 획득할 수 있다. 나는 프록시를 이용하여 agent 정보를 수정하여 SQLi를 진행할 것이다.일단 첫번째 목표를 insert 쿼리에 SQLi를 삽입하여 admin을 생성하여, 요청할 것이다. User-Agent: lrtk', '0', 'admin')# 위와 같은 SQLi를 삽입하였다.삽입을 한 쿼리를 보면, insert into chall8(agent,ip,id) values('lrtk, '0', 'admin')#','{$ip}','guest')으로 된다. -- 대신 #를 사용한 이유는 trim(getenv("HTTP_USER_AGENT")) 때문이다.--를 사용하여, 뒤의 쿼리가 주석처리가 되기 위해선 --뒤에 공백이 존재해야 한다. 하지만 trim 함수로 공백이 삭제가 되기 때문에 --은 주석처리가 되지 않는다.#의 경우, 뒤에 공백이 없어도 주석처리가 되기 때문에 #를 이용하여 주석처리를 한 것이다. 테이블에 데이터를 삽입하고, 다시 Agent를 lrtk로 수정하여 보내면, Flag를 획득할 수 있다. 공유하기 게시글 관리 MSS 'Season 1 > 워게임' 카테고리의 다른 글 [dreamhack] command-injection-1 문제풀이 (0) 2021.05.28 [dreamhack] simple_sqli 문제풀이 (0) 2021.05.28 [Webhacking.kr] Old - 3 Write Up (0) 2021.05.28 suninatas/웹/3번 문제풀이 (0) 2021.05.28 [Webhacking.kr] Old - 60 Write Up (0) 2021.05.27 Contents 당신이 좋아할만한 콘텐츠 [dreamhack] command-injection-1 문제풀이 2021.05.28 [dreamhack] simple_sqli 문제풀이 2021.05.28 [Webhacking.kr] Old - 3 Write Up 2021.05.28 suninatas/웹/3번 문제풀이 2021.05.28 댓글 0 + 이전 댓글 더보기