ssongk
ssongk
ssongk
전체 방문자
오늘
어제

공지사항

  • resources
  • 분류 전체보기 (627)
    • CTF (24)
    • background (79)
      • fuzzing (5)
      • linux (29)
      • linux kernel (15)
      • windows (2)
      • web assembly (1)
      • embedded (0)
      • web (13)
      • crypto (9)
      • mobile (1)
      • AI (1)
      • etc.. (3)
    • write-up(pwn) (171)
      • dreamhack (102)
      • pwn.college (4)
      • pwnable.xyz (51)
      • pwnable.tw (3)
      • pwnable.kr (5)
      • G04T (6)
    • write-up(rev) (32)
      • dreamhack (24)
      • reversing.kr (8)
    • write-up(web) (195)
      • dreamhack (63)
      • LOS (40)
      • webhacking.kr (69)
      • websec.fr (3)
      • wargame.kr (6)
      • webgoat (1)
      • G04T (7)
      • suninatas (6)
    • write-up(crypto) (19)
      • dreamhack (16)
      • G04T (1)
      • suninatas (2)
    • write-up(forensic) (53)
      • dreamhack (5)
      • ctf-d (47)
      • suninatas (1)
    • write-up(misc) (14)
      • dreamhack (13)
      • suninatas (1)
    • development (31)
      • Linux (14)
      • Java (13)
      • Python (1)
      • C (2)
      • TroubleShooting (1)
    • 자격증 (8)
    • 이산수학 (1)
    • 정보보안 (0)
hELLO · Designed By 정상우.
ssongk

ssongk

[Webhacking.kr] Challenge old-02 write-up
write-up(web)/webhacking.kr

[Webhacking.kr] Challenge old-02 write-up

2022. 11. 14. 23:50

문제 화면입니다.

주석을 확인해보니 admin.php가 존재하는 걸 알 수 있습니다

admin.php로 가주면 비밀번호를 입력하라고 나오는데

여기선 sql 인젝션이 먹히지 않습니다.

 

방향을 잡기 어려워 라업을 잠깐 보니

이 문제에선 쿠키에 time 값이 새로 세팅되어 있으며

이 값으로 블라인드 sql 인젝션을 수행할 수 있다고 합니다.

 

time 값을 바꿔주면 주석에 적힌 시간이 바뀌는데

0을 넣어주면 새로 세팅되며

양수를 넣어주면 해당 값 만큼 더해진 시간 값을 주석으로 반환해줍니다.

time : 1
time : 100

 

또한 조건식을 넣어주면 참일 때 1, 거짓일 때 0을 가져옵니다.

time : 1=1
time : 1=2

소스 코드를 제공하지 않으므로 정확한 함수를 알 순 없지만

mysql의 from_unixtime이라는 함수로 추측해볼 수 있습니다.

from_unixtime 함수는 위 주석처럼 파라미터로 받는 숫자를 가지고 날짜로 변환해줍니다.

 

이제 데이터베이스 -> 테이블 -> 컬럼 -> 데이터 순으로 정보를 찾아주어야 합니다.

 

db의 길이가 6임을 알 수 있습니다.

substr와 ord함수를 사용하면 db의 이름을 한 문자씩 알아낼 수 있습니다.

나머지도 같은 방법으로 알아내면 됩니다.

 

다음으로 테이블 이름을 알아내야 합니다.

information_schema를 활용하면 됩니다.

테이블은 총 2개가 있습니다.

하나씩 이름을 알아보겠습니다.

 

length()와 ord(substr())를 통해 테이블의 이름을 구할 수 있습니다.

다 구하면 아래와 같이 나옵니다.

 

다음으로 admin_area_pw 테이블의

컬럼 개수와 이름을 알아내야 합니다.

 

컬럼 개수는 1개이고 길이는 2입니다.

동일한 방식으로 구해주면 컬럼 이름이 pw임을 알 수 있습니다.

 

마지막으로 이제 데이터(레코드)를 구해주면 됩니다.

pw 컬럼엔 1개의 데이터가 존재하며 17자 입니다.

구해주면 비밀번호를 알 수 있습니다.

 

이제 admin.php에 입력해주면

문제가 풀립니다!


레퍼런스

https://aidencom.tistory.com/378

 

[ Webhacking.kr ] old 2 Write Up

Start Blind SQL Injection 문제입니다. 시스템 테이블에 접근해가며 풀어야합니다. Analysis 다음은 문제의 메인 페이지 입니다. 페이지의 소스코드는 다음과 같습니다. Restricted areaHello stranger. Your IP is lo

aidencom.tistory.com

 

 

 

 

 

 

'write-up(web) > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] Challenge old-31 write-up  (0) 2022.11.18
[Webhacking.kr] Challenge old-36 write-up  (0) 2022.11.17
[Webhacking.kr] Challenge old-47 write-up  (0) 2022.11.14
[Webhacking.kr] Challenge old-43 write-up  (0) 2022.11.14
[Webhacking.kr] alien golf write-up  (0) 2022.11.04
    'write-up(web)/webhacking.kr' 카테고리의 다른 글
    • [Webhacking.kr] Challenge old-31 write-up
    • [Webhacking.kr] Challenge old-36 write-up
    • [Webhacking.kr] Challenge old-47 write-up
    • [Webhacking.kr] Challenge old-43 write-up
    ssongk
    ssongk
    벌레 사냥꾼이 되고 싶어요

    티스토리툴바