![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bFJlQk/btrax7iua0A/1BArjJSksex30DHvS3cC01/img.png)
58번째 글. 1. 코드 분석 쿼리 스트링으로 order 파라미터에 값을 주면 'order by' 쿼리에 의해서 id와 email 그리고 score를 테이블에 아래와 같이 출럭한다. admin의 email을 찾아내면 문제가 풀린다. 2. Exploit 이 문제도 힌트를 보고 풀었다 -,- 이제 점점 힌트없이는 풀 수 없는 문제들이 나오는 것 같다 ㅜㅜ id='rubiya'로 정렬기준을 줬을 때는 아무런 변화가 없는 것 처럼 보인다. id='admin'으로 하면 admin이 밑에 깔린다. 즉, 정렬기준이 아래에 깔린다고 볼 수 있다. 이 부분을 이용하면 된다. ?order=length(email)=특정 정수,id='rubiya' 정렬기준에 이렇게 함수를 이용해도 정렬이 된다는 것을 알 수 있었다. 만약 a..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/OgUQZ/btraoaUtTMJ/uK0gxH7Q7i6FVBNkeqXlvk/img.png)
57번째 글. 1. 코드 분석 특이점은 if를 필터링하고 있다. 또한 iron_golem문제 같은 경우는 error를 띄어줬지만 이번 문제는 error가 생기면 흰 화면만 보여준다. 2. Exploit 계속되는 삽질에 결국 힌트를 얻어서 풀었다;; ' or id='admin' and (select 1 union select length(pw)=특정숫자)%23 서브쿼리를 쓸 때는 보통 단일 행, 단일 칼럼의 결과가 반환되도록 해야 한다. 그렇기 때문에 pw의 길이가 일치하지 않으면 서브쿼리 구문은 2개의 행을 반환하게 되어서 오류가 나게 된다. 만약 pw의 길이가 일치하면 select 1 union select 1 이렇게 되어서 아래와 같이 하나의 행만 반환하여 정상적으로 쿼리가 실행되어서 흰 화면이 나오..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/DTr4O/btrai732wc2/djWkWpIM0HfnTWDvL5NFw1/img.png)
56번째 글. 1. 코드 분석 기존의 'Hello admin'을 이용하는 Blind injection을 사용할 수 없게 되어 있다. 또한 sleep과 benchmark가 필터링된 것을 보니 그냥 Blind injection은 쓰지 말라는 소리이다. 2. Exploit single quote만 넣어줘도 error based injection임을 알 수 있다. ' or id='admin' and if(length(pw)=7, pow(10,10000),0)%23 pow() 함수를 이용해서 pw의 길이가 맞으면 MySQL에서 지원하는 double형의 범위를 일부러 초과하여 에러를 띄우는 식으로 원하는 정보를 얻을 수 있다. ' or id='admin' and if(substr(pw,인덱스,1)='특정문자',po..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/be5hX5/btq94sfCa4B/ohYzYgnO4HtehnkbOVz2F0/img.png)
55번째 글. 1. 코드 분석 주석(#)을 통해서 뒤에 있는 조건을 무효화시키고 있다. 2. Exploit #은 한줄만 주석처리를 하기 때문에 개행(line feed)을 통해서 escape 할 수 있다. ?pw=aaa'%0a and 1=2 or id='admin' and 1=1%23 이렇게 주게 되면 당연하지만 주석과 개행 사이의 문자는 무효가 되고 뒤에 오는 조건이 하나의 쿼리로 인식되어 실행이 가능해진다. 그렇기 때문에 일부러 false인 조건을 넣고 앞의 and 연산을 false로 만든 뒤 id='admin'인 조건을 넣어서 쿼리의 결과가 admin이 될 수 있도록 만들어 준다.
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cjnWl7/btq96D1Yjo5/mvH2DcaSTWPVCZKvQpd2f1/img.png)
54번째 글. 1. 코드 분석 뭐지 특별한 것이 없었다. 기존에 풀었던 문제들과 같으며 특이점이 없다. 2. Exploit 하지만 역시 쎄한기분은 틀리지 않았다. pw의 길이는 12로 나오는데 아무리 해봐도 pw가 찍히지 않았다. 결국 힌트를 찾게 되었고 pw가 영문이나 숫자가 아닐 수 있다는 것을 알게 되었다. 자연스럽게 한글일 수 있겠구나라고 생각했다. pw의 첫 글자의 길이를 찍어봤더니 4바이트라고 한다. 그러면 처음의 모든 길이를 찍었을 때 12였으니 3글자일 것이다. 그리고 기존의 pw를 hex() 함수를 써서 변환해본 결과 총 24글자가 나왔다. (한글에서 영문과 숫자로 이루어진 조합으로 되기 때문에 한 글자에 1바이트씩 되므로 혼동하지 말자) 3등분으로 쪼개면 8 글자씩 된다. 즉 16진수로..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cWmNzv/btq91piwwnV/UGIkFnHpH9Kd1wTT1GOohK/img.png)
53번째 글. 1. 코드 분석 strlen() 함수는 바이트 기준으로 문자열의 길이를 알려주는 함수이다. 한글과 영어일 때 같은 문자열의 길이를 입력해도 서로 다르다. 어쨌든 길이가 6 이상이면 'No Hack ~_~'을 출력한다. 2. Exploit MySQL의 자동 형 변환을 이용해서 풀 수 있다. 서로 다른 데이터의 타입을 조회할 시 같은 타입으로 형 변환을 하여 비교하게 된다. 결론적인 핵심만 말하면 문자는 숫자 0과 같다라는 것을 기억하면 된다. ?pw=')=0;%00 이렇게 보내주면 문자 또는 0으로 시작하는 pw가 조회될 것이고 세미콜론과 널바이트로 쿼리를 종결해 줄 수 있다. Reference https://limjunyoung.tistory.com/121 // MySQL 자동 형 변환 h..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lmMfZ/btq9TEtF94d/RXC5pEpSufXgX9uBDzbyX1/img.png)
52번째 글. 1. 코드 분석 addslashes() 함수를 이용해서 single quote, double quote, \, 널바이트를 escape해주고 strrev() 함수로 문자열을 거꾸로 배치한다. 2. Exploit 운이 좋게 앞 문제와 비슷한 유형일거라고 생각하고 id의 두 번째 single quote를 escape하면 어떨까라고 생각했는데 ?id="&pw=%23 1=1 ro double quote를 쓰면 single quote와 짝을 이루지도 않고 \를 id의 두 번째 single quote앞에 놓을 수 있기 때문에 쉽게 escape할 수 있었다.
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/t4Ql8/btq9KnMeYjW/2i0FVBZkEjSCyZ98kjekV0/img.png)
51번째 글. 1. 코드 분석 id, pw 파라미터에 대해서 single quote를 필터링하고 있다. 2. Exploit 백슬래시를 쓸 수 있으면 escape를 이용할 수 있다. ?id=\&pw= or id="admin"%23 위처럼 주게 되면 select id from prob_succubus where id='\' and pw=' or id="admin"#' 두번째 single quote가 escape되고 id의 첫 번째 single quote와 pw의 첫 번째 single quote로 감싸 지게 되어서 빨간색 부분이 id의 값으로 들어가게 된다.
- Total
- Today
- Yesterday
- DreamHack
- htb Windows Fundametals
- Windows Fundamentals
- 드림핵 padding oracle
- xxe injection
- php LFI
- dreamhack Relative Path Overwrite
- dreamhack DOM XSS
- SQL Injection
- Lord of SQL injection
- hack the box
- wargame
- 드림핵
- CSS Injection
- 드림핵 DOM XSS
- hackerfactory
- dreamhack padding oracle
- dreamhack CSS Injection
- webhacking.kr
- dreamhack web-alasql
- csp bypass
- 웹해킹
- alasql
- htb
- 해커팩토리
- WebHacking
- csp
- blind injection
- LFI vulnerability
- 드림핵 Relative Path Overwrite
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |