Web Hacking/LOS

Lord of SQL Injection - phantom

2021. 9. 1. 09:00

table을 이용하는 문제가 다시 등장했다. 우선 차근차근 코드를 이해해보자. 

 

제일 먼저 duplicate 이라는 문자열을 필터링한다. 필터링이 없었다면, insert 문 제일 뒤쪽에 on duplicate 를 적음으로써 기존에 있던 table 데이터를 우리가 원하는 특정 문자열이나 숫자로 값을 바꿀 수 있다. 그렇게 해서 no의 값이 1인 row를 다른 no 값으로 변경하여 email이 asterisk(*)로 변경되는 조건문을 뛰어넘을 수 있었다.

 

그 다음은 $_SERVER[REMOTE_ADDR] 로 접속자의 IP를 가져오고, joinmail 값을 가져와 하나의 row를 insert 한다. 예를 들어서 간단한 임의의 이메일을 전달해주면 다음과 같이 하나의 row가 추가된 것을 볼 수 있다.

한 가지 신기한 점은, insert 문에서 value를 여러개 할당할 수 있고, 동시에 value의 인자에 select 문을 subquery로 전달할 수 있다는 것이다. 또한 이 때 주의해야 할 점이 있다.

 

바로 MySQL 에서는 insert 할 때 insert 하려고 하는 table의 데이터를 참조할 수 없다는 점이다. 예를 들어,

insert into prob_phantom values(0,'9.9.9.9',(select email from prob_phantom where no=0))

과 같은 query는 오류가 발생한다는 것이다. 하지만 이때 as를 이용하여 마치 prob_phantom 테이블의 이름을 바꿔서 사용하는 것처럼 이용하면 해결된다. 이럴거면 왜 insert 대상 table을 참조하지 못하게 하는 것인지 모르겠다. 너무나도 멍청한 취약점이다. 

 

query를 위와 같이 전달해주니 no=1 일 때의, 즉 우리가 원하는 email을 찾을 수 있었다. 그러나 한 가지 의문이 있다.

내가 처음에 만든 no=0 인 email을 뽑아오려고 시도했으나 아무리 해봐도 되지 않는다. 이게 무슨 말이냐 하면,

~ (3,'X.X.X.X',(select email from prob_phantom as e where no=0))%23

으로 query를 다시 보냈을 때, 분명히 no=0 에는 email='hello@beautiful.life'라는 놈이 있는데 불러오지 못한다는 것이다. 문제 DB는 다같이 사용하는 것이니 insert로 만든 것은 실제로 적용되지는 않는다고 하기에는 아까 추가적으로 만든 no=2 를 다시 insert 해봤을 때는 아래와 같이 정상적으로 insert 된다.

왜 no=0 인 놈에서는 안 뽑아지는 것인가. 나중에 간단한 table을 만들어서 왜 안 되는지 test 해봐야겠다.

말이 안 된다. X버그인 것 같다.

 

(왜인지 아시는 분은 댓글 좀 부탁드립니다... ( _ _ ) )

저작자표시 (새창열림)

'Web Hacking > LOS' 카테고리의 다른 글

Lord of SQL Injection - zombie  (0) 2021.10.02
Lord of SQL Injection - frankenstein  (0) 2021.09.01
Lord of SQL Injection - red_dragon  (0) 2021.08.29
Lord of SQL Injection - blue_dragon  (0) 2021.08.29
Lord of SQL Injection - evil_wizard  (0) 2021.08.26
'Web Hacking/LOS' 카테고리의 다른 글
  • Lord of SQL Injection - zombie
  • Lord of SQL Injection - frankenstein
  • Lord of SQL Injection - red_dragon
  • Lord of SQL Injection - blue_dragon
Lucvs
Lucvs
Department of Computer Science and Engineering, 21th, Sungkyunkwan University
Lucvs
Lucvs
Lucvs
전체
오늘
어제
  • 분류 전체보기
    • Lucvs
      • 훈련소 일기
      • 寿司
      • 영국 여행기
    • Pwnable
      • Techniques
      • FTZ
      • LOB
      • HackCTF
      • Dreamhack
      • pwnable.kr
      • CTF
    • Web Hacking
      • Techniques
      • Webhacking.kr
      • HackCTF
      • Dreamhack
      • LOS
    • Reversing
      • Dreamhack
    • Cryptography
      • Modern Cryptography
      • Algorithm
      • Differential Attack (차분 공격)
      • Linear Attack (선형 공격)
    • Forensic
      • Dreamhack
    • Programming
      • C
      • Python
      • Java
    • Deep Learning
    • Network
    • Project
    • Hardware
      • Raspberry Pi
      • Arduino

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 잉글랜드
  • Los
  • Lord of SQL Injeciton
  • 런던
  • 웹해킹
  • 군대 일기
  • 훈련소
  • Differential Attack
  • rev-basic
  • dreamhack.io
  • 효전화
  • 공군
  • J
  • lord of sql injection
  • 기본군사훈련단
  • blind sql injection
  • 영국
  • 차분 분석
  • SQL INJECTION
  • dreamhack
  • 여행기
  • 일기
  • 드림핵
  • 차분 공격
  • Web Hacking
  • Error-Based SQL Injection
  • 공군 훈련소
  • 군대
  • 훈련소 일기
  • 기훈단

최근 댓글

최근 글

hELLO · Designed By 정상우.
Lucvs
Lord of SQL Injection - phantom
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.