WEB 52

webhacking.kr 13번

no 값이 True이면 result 1을 출력하고 False이면 result 0을 출력하는 것 같다. 필터링되는 문자를 입력하면 아래 그림처럼 no hack을 출력한다. 이것저것 입력해 본 결과, 필터링되는 것과 필터링되지 않는 것을 파악할 수 있었다. (SQLi에 주로 쓰이는 것들만 나열) 필터링되는 것 : 공백, 탭, =, , union, where, ||, &&, like, and, group_concat 등 필터링되지 않는 것 : or, select, in 등 문제를 풀기 위해서는 FLAG 값을 찾아야 한다. 따라서 앞서 파악한 정보들을 바탕으로 Blind SQL injection을 시도해야 한다. FLAG 값을 구하기 위해서는 3단계를 거쳐야 한다. 1. table 명 찾기 2. column 명..

webhacking.kr 9번

오랜만에 문제풀이 ..ㅎ..ㅎ.ㅎㅎ 1,2,3을 눌러보면 아래 그림처럼 출력되는 것을 볼 수 있다. 여기서 알 수 있는 것은 no=1 id=Apple no=2 id=Banana no=3 id=(password) 이고, 우리는 no=3의 id를 찾아야 한다. 이것저것 입력해 본 결과, 아래와 같은 문자열 입력 시 Access Denied를 출력한다. -> union, select, procedure anaylses(), =, and, or ... (추후 문제 풀다가 알게 된 건 bin, ord 도 필터링되어 있음) 또한, no=4 처럼 테이블에 존재하지 않는 값을 입력하면 아무것도 출력하지 않는다. 이를 이용해 우리는 blind sql을 시도할 수 있다. if문을 이용해 먼저 id 길이를 확인한 후, id..

webhacking.kr 29번

첫 화면에 FLAG is in another table이라고 써있는 것을 보고 SQL인젝션 문제인가.. 생각을 해봤다. 공격시도할 수 있는 방법은 파일명을 이용하는 것밖에 없기 때문에 파일명을 조작해야한다. 파일을 업로드하는 것이기 때문에 insert문을 사용할 것이고, insert문의 칼럼 순서를 알아내야 한다. -> insert문 : insert into 테이블명 (칼럼1, 칼럼2, 칼럼3) values (값1, 값2, 값3) 이것저것 테스트해 본 결과 file, time, ip 순으로 되어있는 것을 알 수 있었다. 이제 FLAG값을 알아내야한다. FLAG값은 다른 테이블에 있다고 했으니 테이블명을 알아내야 하는데, 그 전에 ! 데이터베이스명을 먼저 알아야한다. 데이터베이스명 찾기..

webhacking.kr 35번

view-source 클릭 ! $_GET['phone']에 *, /, =, select, -, #, ;가 포함되어있으면 no hack을 출력한다. $_GET['id']는 5를 넘으면 안되고, admin을 입력할 수 없다. 입력된 $_GET['id']와 $_GET['phone']는 chall35테이블의 id와 phone칼럼에 추가되고, $_SERVER['REMOTE_ADDR'](ip주소)는 ip칼럼에 추가된다. 이 때, id=admin이고 ip=내 ip주소인 데이터가 존재한다면 문제가 해결된다. $_GET['id']에는 admin을 직접 입력할 수 없다. 그러므로 insert문을 이용해 id가 admin이고, 내 ip주소를 갖는 데이터를 추가해주면 된다 ! phone=0),('admin','내 ip주소',..

webhacking.kr 60번

view-source 코드해석하기 ! file_get_contents() : 전체파일을 문자열로 읽어들이는 함수 unlink() : 파일을 삭제하는 함수로, 성공하면 true를 반환하고 실패하면 false를 반환 $_COOKIE['PHPSESSID']의 값이 숫자가 아니면 Access Denied가 출력된다. $_GET['mode']가 auth이고, ./readme/{$_SESSION['idx']}.txt 파일에 $_SESSION['idx']값이 들어있으면 파일이 삭제되고, 문제가 해결된다. $_GET['mode']가 auth이 아니라면, ./readme/{$_SESSION['idx']}.txt 파일에 $_SESSION['idx']를 입력하고, 파일을 닫는다.그리고 만약 ip가 127.0.0.1아니면, ..

webhacking.kr 53번

view-source 밖에 볼 게 없으니.., 코드를 해석해봐야겠다. $_GET['answer']이 hidden_table과 같으면 문제가 해결된다. $_GET['val']에는 select, by가 포함되어 있으면, no hack이 출력된다. 일단 hidden_table에 대해서 아는 정보가 없기 때문에 $_GET['val']을 이용해 테이블명을 알아내야한다. 여기서 알아둬야할 명령어 !! 테이블명을 알아낼 때, procedure analyse()를 사용하면 우리가 원하는 값을 찾을 수 있다. 위 사진에서 볼 수 있듯이 procedure analyse()를 통해 데이터베이스명, 테이블명, 칼럼명까지 알아낼 수 있다. 따라서, val=1 procedure analyse(); 를 입력해주면 hidden_ta..

webhacking.kr 49번

view-source 코드를 해석해보면, $_GET['lv']에 select, or, and, (, ), limit, 콤마(,), /, order, cash, 공백, tap키, 작은따옴표('), 큰따옴표(")가 포함되어 있으면 no hack을 출력한다. 그리고 select문의 결과가 admin이면 문제가 해결된다. 문제를 풀기위해서는 $_GET['lv']에 id=admin을 넣어줘야한다. lv : 1~4까지는 각 lv값에 일치하는 id가 있기 때문에 lv=0||id=admin 을 입력해주었다. (or 대신 ||를 이용) 그러나 no hack이 출력되었다.., admin을 입력해서 그런것같아 admin대신 0x61646D696E를 입력해주었다. -> lv=2||id=0x61646D696E 그랬더니 문제 해..

webhacking.kr 48번

뭘 해야될지 모르겠어서 일단 파일을 업로드해봤다. upload file을 누르면, 내가 업로드한 파일의 내용이 출력된다. 또, php코드가 실행되지 않는 것도 알 수 있었다. 파일을 Delete하면, 타임스탬프가 찍히는 것을 볼 수 있었다. (゚ペ)?... 어떻게 풀어야될지 모르겠어서 찾아보니 업로드한 파일이 삭제될 때, 'rm /upload/파일명' 명령어가 실행되고 file deleted 창이 뜨는 것이다. 그러므로 rm명령어 뒤에 우리가 원하는 명령어를 입력하면 된다. 명령어를 더 실행시키기 위해서는 세미콜론(;)을 이용해야 한다. 피들러를 이용해 업로드한 파일명을 바꿔줬다. 업로드한 후, Delete해주면 rm명령어 다음 ls명령어가 실행되어 FLAG값이 출력된다 ! FLAG{i_think_th..

webhacking.kr 46번

$_GET['lv']에 띄어쓰기, /, *, %가 포함되어있으면 공백으로 대체되고, select, 0x, limit, cash가 있으면 종료된다. 그리고 select문에서 출력된 id가 admin이면, 문제가 풀린다. lv=0 or id=admin으로 입력해주면 되는데, 여기서 띄어쓰기는 %09로 우회해줬다. 그치만 아무 반응이 없어 admin도 char(97,100,109,105,110)로 바꿔서 입력해주었다. lv=0%09or%09id%3dchar(97,100,109,105,110) 그랬더니 성공 ~~!~!! ₍₍ ◝(・ω・)◟ ⁾⁾

webhacking.kr 7번

먼저 view-source를 해석해보쟈 ! $_GET['val']에 2, -, +, from, _, =, \s(공백), *, / 가 있으면 Access Denied!가 출력된다. $rand는 1~5사이의 숫자 중 랜덤으로 지정되어 select문이 실행된다. 이 때, select문의 출력값이 2이면 문제가 해결된다. 결국 $_GET['val']를 2로 만들어줘야한다. 그치만 2와 사칙연산 기호들이 필터링되어 있기때문에 2를 우회해서 입력해야한다. 2를 우회하는 방법은 2진수, 16진수나 아스키코드값으로 바꾸는 방법이 있는데, 아스키코드값으로 입력해보았다. 그러나 query error가 출력되었다...ㅇㅂㅇ char(50)을 2로 인식하지 못하는 것같아, union select를 이용하였다. 또, 공백이 필..