Webhacking.kr 8번

2015. 8. 15. 13:59·Webhacking.kr

 

$agent 변수에 "getenv" 함수를 이용하여 "HTTP_UESR_AGENT" 값을 저장한다.

$ip 변수에 클라이언트의 공인 IP 값을 저장한다.

 

$agent 변수에서 공백을 제거(trim) 한다.

 

$agent 변수에서 '.', '/' 문자가 발견되면 '_' 문자로 치환한다.

 

$pat 변수에 필터링 할 여러 문자열들을 저장한다.

 

 

$agent 변수 값과 $pat 변수값을 비교하여 일치하면(필터링에 걸리면)가 오류가 발생한다.

 

HTTP_USER_AGENT 값에 대하여 특정 문자를 치환한다.

 

$count_ck 변수에 "SELECT" 쿼리 결과가 저장된다.

쿼리 결과(id 컬럼 개수)값이 70개 이상이면 "lv0" 테이블의 모든 데이터를 삭제한다.

 

$q 변수에 쿼리를 저장하는데, 쿼리에서 $HTTP_USER_AGENT 변수 값이 사용된다.

 

$ck 변수에 $q 쿼리 변수를 실행한 결과를 저장한다.

 

$ck 변수 값이 존재하면 "hi $id" 문자열을 출력하고, 해당 $id 값이 "admin" 이면 문제가 클리어 된다.

 

 

만약 $ck 변수 값이 존재하지 않으면 "INSERT" 쿼리를 날려준다.

 

 

* 처음 문제를 풀려고 할 때에는 당연히 $ck 변수(쿼리 실행 결과) 값이 없기 때문에 "INSERT" 문이

   실행된다.

 

   그런데 $ip 변수는 우리가 변조 할 수 없기 때문에 결국 인젝션 포인트는 $agent 변수가 된다.

 

   그리고 id 값이 "admin" 일 때만 클리어 되는데 이미 위 쿼리에서는 "guest" 문자열이 고정으로

   박혀있다.

 

   따라서 $agent 변수에서 테이블의 agent, ip, id 값을 모두 세팅하고 주석을 입력하여 뒷 부분을

   무시해야 한다.

 

 

우선 기본적으로 패킷을 보내면 "User-Agent" 값은 "Mozilla/5.0 (Windows NT 6.1; WOW64) ~~" 가

세팅된다.

 

 

"INESRT" 쿼리에서 사용되는 인젝션 포인트 ($agent 변수)를 공격하기 위해 "User-Agent" 값을

 위와 같이 변조한다.

 

 

페이로드

- bob', '58.xxx.xxx.xxx', 'admin') #

 

실행되는 쿼리

- INSERT INTO lv0(agent,ip,id) VALUES ('Mozilla/5.0 ~~~', '58.xxx.xxx.xxx', 'guest')

- agent 값 변조

 

- INSERT INTO lv0(agent,ip,id) VALUES ('bob', '58.xxx.xxx.xxx', 'admin') #', 
   '58.xxx.xxx.xxx', 'guest')

- 주석 '#' 때문에 뒷 부분 무시

 

- INSERT INTO lv0(agent,ip,id) VALUES ('bob', '58.xxx.xxx.xxx', 'admin')

 

위와 같이 날리면 "bob" 라는 Uesr-Agent 데이터에 해당되는 id 값은 "admin"이 될것이다.

 

문제 클리어를 위해 User-Agent 값을 "bob"로 변조한다.

INSERT 쿼리가 실행되었기 때문에(결과 존재) SELECT 쿼리가 실행되어 "admin" 문자열을

가져올 것이다.

 

 

 

저작자표시 비영리 동일조건 (새창열림)

'Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 10번  (0) 2015.08.15
Webhacking.kr 9번  (0) 2015.08.15
Webhacking.kr 7번  (0) 2015.08.15
Webhacking.kr 6번  (0) 2015.08.15
Webhacking.kr 5번  (0) 2015.08.15
'Webhacking.kr' 카테고리의 다른 글
  • Webhacking.kr 10번
  • Webhacking.kr 9번
  • Webhacking.kr 7번
  • Webhacking.kr 6번
초보 & 뉴비
초보 & 뉴비
보안과 개발(프론트는 좀 약함, 미적 감각 부재 이슈)을 좋아하며 업으로 삼고 있습니다.
  • 초보 & 뉴비
    보안과 그 개발, 그 어딘가
    초보 & 뉴비
  • 전체
    오늘
    어제
    • 분류 전체보기 (331)
      • 옵시디언 (1)
      • 도커&쿠버네티스 (1)
      • NAS(시놀로지&헤놀로지) (1)
      • Webhacking.kr (62)
      • Lord_of_SQL-Injections_I (27)
      • DVWA (0)
      • Root-Me.org (0)
      • Pwnable.kr (6)
      • HackerSchool_FTZ (20)
      • CodeEngn_Basic (20)
      • CodeEngn_Advance (0)
      • Lord_of_BoF_Redhat (1)
      • Lord_of_BoF_FC3 (5)
      • io_smashthestack (6)
      • n00bs CTF Labs (1)
      • 블록체인 (3)
      • Machine Learning (25)
        • Tensorflow (3)
        • PyTorch (18)
        • Visualize (4)
      • Kali 2.0 & Metasploit (16)
        • Windows Hacking (5)
        • Linux Hacking (0)
        • Malware (3)
        • ETC (8)
      • Fuzzing (2)
      • Windows (1)
      • Linux (4)
      • Android (2)
      • Android_Vuln (26)
      • 익스플로잇 (12)
      • 모의해킹 (4)
        • 워드프레스 (4)
      • SQL Injection (1)
      • System Hacking(OS) (5)
        • Shellcode (5)
      • Buffer OverFlow (9)
      • Reversing (44)
        • Lena's Reversing Tutorial f.. (41)
        • 이것 저것 (3)
      • ===== 번역 ===== (0)
      • primalsecurity.net (14)
        • Python Tutorials (14)
      • securityxploded.com (1)
        • IDA Pro (1)
      • 개인 정리 (11)
        • Burpsuite (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

    • 정보보안 관련 포스팅 주의사항
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
초보 & 뉴비
Webhacking.kr 8번
상단으로

티스토리툴바