아직 작성 중인 글 입니다...
trim()
:: 문자열 앞뒤로 공백을 없애주는 함수
getenv()
:: 함수의 인자로 오는 변수에 따라 해당되는 환경 변수값을 알려주는 함수.
- REMOTE_ADDR : 웹 사이트를 접속한 컴퓨터의 ip address
- HTTP_USER_AGENT : 웹 사이트를 접속한 컴퓨터의 웹 브라우저 정보
addslashes()
:: DB 작업을 위해 쿼리를 작성할 때, 따옴표를 escape 시켜주는 함수.
ex) addslashes(You're my sunshine) >>> You\'re my sunshine
htmlentities()
:: html 태그를 그대로 출력하는 함수.
PHP 부분부터 살펴보면,
$agent 변수에 HTTP_USER_AGENT(접속 웹 브라우저 정보)을 저장하고,
$ip에는 REMOTE_ADDR(접속 ip주소)을 넣어준다.
만약 $agent 변수에 from 또는 FROM이 들어가면 Access Denied! 를 한다.
$count_ck에는 'select count(id) from chall8'의 결과가 배열의 형태로 저장되어 있다.
$count_ck에는 70개 이상의 값이 들어가면 저절로 삭제되게 되어있다.
그리고 $agent 변수가 현재 접속한 유저의 HTTP_USER_AGENT와 같은지 비교하고,
그중에서도 $agent의 id가 admin이면 문제가 풀리는 구조이다.
만약 $agent 변수가 존재하지 않는다면 agent와 ip, id를 insert 해준다.
우리가 현재 건드릴 수 있는 값은 $agent이고
$agent 변수에 'admin' 문자열을 넣는 것을 목표로 해야한다.
데이터를 넣는 것은 Insert 쿼리가 있는 맨 마지막 조건문을 이용해야 한다.
(!$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)");
}
$agent 에 test','1.1.1.1','admin')('test2 를 넣게 되면
쿼리문은 insert into chall8(agent, ip, id) values('test','1.1.1.1','admin')('test2',$ip값,'guest') 가 되는 것이다.
$agent를 변조시키기 위해서는 Burp Suite를 이용해야 한다고 한다.
(Burp Suite 도구를 사용해서 HTTPS 요청 패킷을 캡처할 수 있기 때문)
Burp Suite 사용법을 익힌 후 다시 작성하겠다,,^^
'WEB > WEB Hacking' 카테고리의 다른 글
[Webhacking.kr] Challenge(old) 10번 풀이 (0) | 2021.05.20 |
---|---|
[Webhacking.kr] Challenge(old) 9번 풀이 (0) | 2021.05.10 |
[Webhacking.kr] Challenge(old) 7번 풀이 (0) | 2021.05.08 |
[Webhacking.kr] Challenge(old) 6번 풀이 (0) | 2021.05.07 |
[Webhacking.kr] Challenge(old) 5번 풀이 (0) | 2021.05.06 |