[350] prob8
오랫만에 웹해킹 문제를 풀었다 ㅠ^ㅠ..
배점이 높아질수록 내가 직접 풀기보단 풀이를 보는 횟수가 더 많아지는 것 같아서 ..
손이 잘 가지 않는다.. 풀이를 보더라도 빠르게 클리어하고 넘어가는게 맞는 일인가 고민..
쨌던! 350점 배점의 8번 문제이다
그저 까만화면에 USER-AGENT라고 써져있고 done!이라고 뜬다...무슨 뜻일까..
유저에이전트..어디서 많이 본것같다..
소스보기를 해보니 소스를 제공해주어서 확인해보았다.
HTTP_USER_AGENT값을 가져와서 $agent라는 변수의 값으로 사용하고 ip도 가져온다.
처음보는 함수가있었다!
trim($string) - 문자열의 처음과 끝에 있는 공백을 지움
strtolower($string) - 모든 알파벳을 소문자로 바꿈
그리고 user-agent는 많은 필터링을 거친다.
7~8 : . / 가 있을 경우 _로 바꿈
str_replace같은 경우에는 문자열에 대해 한번만 적용되므로 혹시나 필요하다면 중복 입력해서
우회할 수 있을 것 같다.
10 : sql injetion에 사용될만한 여러 단어들을 죄다 거르고 있다 ;
13 : 패턴에 일치하는 문자가 있을 경우 exit
15~16 : USER_AGENT값을 가져와서 싱글쿼터('), 더블쿼터(") 를 str_replace를 이용해 없애 버림!
이것도 중복입력을 통해 우회 할 수 있다.
18 : $count_ck=@mysql_fetch_array(mysql_query("select count(id) from lv0"));
와 같은 쿼리문을 통해 값을 가져오고.
20~23 값이 70을 넘어갈 경우 db에서 삭제한다.
소스를 쭉 보니 db에 admin 이라는 새로운 id를 삽입해 주어야 문제가 풀릴 것 같다.
쿼리문을 보니 무조건 id는 guest로 설정되어 삽입되고 있었다.
파로스로 user-agent를 조작해서 admin으로 바꾸어 줄 수 있지 않을까!
+) 그리고 거짓말 같이 파로스로는 문제가 풀리지 않았고 ㅡㅡ.. 버프슈트를 이용하니
거짓말 같이 문제가 풀렸다 ㅡㅡ..삽질잼.. 갈아탈 때가 온 것 같다...
어쨌든..버프 슈트를 사용한다..
쿼리문을 조작하기 위해 user-agent값을 수정한다.
user-agent에 ellen28','0.0.0.0','admim'# 와 같이입력하면
id는 admin으로 삽입될것이다.
done!정상적으로 삽입된거 같다.
그리고 이번에는 user-agent를 아까 등록 했던 ellen28로 수정해주면
!문제가 풀렸다.. 왜인지는 모르겟지만 파로스로 했을땐 이방법 저방법 다 해봐도 안풀렸었는데
바로풀렸다.. 신나는 삽질..
쨌던 8번 문제도 힘들게! 클리어!