전체 글 70

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를 이용하였다. 또, 공백이 필..

webhacking.kr 5번

Join을 누르면 Access_Denied 창이 뜨고, Login을 눌렀을 때는 아이디와 패스워드를 입력하는 폼이 나온다. 이것저것 입력해봤지만, Wrong password만 출력되고 다른 반응이 없다. login하기전에 join을 해야될 것같아 /mem/join.php로 들어가봤다. bye창이 뜨고, 소스코드를 보니 이상한 문자들로 되어있었다 ! console창에 입력해 코드를 실행시켜보았다. l='a';ll='b';lll='c';llll='d';lllll='e';llllll='f';lllllll='g';llllllll='h';lllllllll='i';llllllllll='j';lllllllllll='k';llllllllllll='l';lllllllllllll='m';llllllllllllll='n';..

webhacking.kr 33번

Challenge 33-1 GET방식으로 변수 get에 hehe를 저장하여 전송한다. Challenge 33-2 POST방식으로 post와 post2 변수에 각각 hehe와 hehe2를 저장해 전송한다. POST POST2 이렇게 html 코드를 수정해서 전송해줄 수도 있지만, 나는 프록시를 이용해 문제를 풀었따. Challenge 33-3 GET방식으로 내 아이피주소를 전송한다. Challenge 33-4 이번에는 hint가 있다. time을 md5암호화한 값을 password에 넣어 GET방식으로 전송하면 된다. hint에 time이 나와있으니, hint에 나와있는 시간에서 좀 더 더한 값을 계속 전송하면 될 것같다. >>> import hashlib >>> hashlib.md5('1586023770..

webhacking.kr 57번

view-source 클릭 ~! isset() : 변수가 존재하면 true, 존재하지 않으면 false 리턴 $_GET['se']에는 select, and, or, not &, |, benchmark가 있으면 Access Denied가 출력된다. $_SESSION['id'], $_GET['msg'], $flag, $_GET['se']는 각각 chall57테이블의 id, msg, pw, op 칼럼의 값으로 삽입된다. 일단 문제를 풀기 위해서는 $flag값인 pw를 알아내야할 것같다. msg와 se에 이것저것 입력해봤지만 다른 오류메세지 없이 Done으로 출력된다. 따라서 출력값으로 반응을 보지않고, sleep함수를 이용해 반응속도(?)로 참인지 거짓인지 확인해야할 것같다 ʕ•̀ω•́ʔ 다음은 flag길이와..

webhacking.kr 45번

SQL Injection문제 진짜 많댜..( ˘・з・˘) mb_convert_encoding(문자열, 바꿀 인코딩, 현재 인코딩) : 문자인코딩을 바꿔주는 함수 GET방식으로 id와 pw를 받는데, 만약 admin,select, limit, pw, =, 가 포함되어있으면 필터링된다. $_GET['id']와 $_GET['pw']는 select문에 삽입되는데, $_GET['pw']는 md5로 인코딩되어 들어간다. 그리고, select문 출력값의 id가 admin이면 문제가 해결된다 ! 여기서 주목해야할 점은 mb_convert_ecoding함수에서 $_GET['id']의 문자인코딩을 'utf-8'로 바꿔주는 것과 addslashes함수이다. 멀티바이트를 사용하는 환경에서 백슬래쉬 앞에 %a1~%fe의 값이 ..

webhacking.kr 30번

./upload/ChU92oQ7XoBb/index.php?view_source=1 를 클릭했더니 php코드가 나왔다. $result 쿼리문에서 값이 출력되면 /flag를 보여준다는 내용이다. 그런데 이전 SQL Injection문제들과 다르게 쿼리문에 우리가 직접 삽입할 수가 없다.. (,,•ㅅ•,,) 파일 업로드 취약점인가 하고 py,php 확장자를 가진 파일을 업로드해봤지만 아무 반응도 없었다. 소스코드 외에는 취약점을 찾을만한게 없어서 계속 구글링해보니, mysqli_connect 함수에 아무런 파라미터값이 없는 것이 문제라는 것을 알게 되었따...ㄟ( ・◇・ )ㄏ 먼저 mysqli_connect 함수를 알아보자 ! mysqli_connect함수는 host, username, passwd, dbna..

webhacking.kr 44번

php코드를 해석해보면, POST방식으로 받은 id값을 1번째부터 5번째 글자까지 $id에 저장한다. 그리고 우리는 system함수를 통해 ls명령어를 실행시켜야한다. system함수안에서 2개의 명령어를 실행시키기 위해서는 첫번째 명령어 뒤에 세미콜론(;)을 붙여주면 된다. 따라서 $id에 ;ls를 입력하면 될 것같지만 !! {$id}뒤에 작은따옴표(')가 붙어있기 때문에 ';ls' 를 입력해줘야한다. 그리고, http://webhacking.kr:10005/flag_29cbb98dafb4e471117fec409148e9386753569e 에 들어가면 FLAG값 등장 ~~!~!! (๑˃؂˂๑)

webhacking.kr 40번

이번 문제도 SQL Injection문제인 것같다 (•ε•;) login을 하면, GET방식으로 no=1&id=guest&pw=guest가 전달되어 Success-guest라고 출력되는 것을 볼 수 있다. 이것저것 입력해본 결과, access denied와 Failure가 출력되는 것을 볼 수 있었다. no=1' or 1=1 -- &id=guest&pw=guest no=1' or 1=2 -- &id=guest&pw=guest -->no에서 or과 and가 필터링됨 no=1&id=guest' or 1=1#&pw=guest no=1&id=guest' or 1=2#&pw=guest -->id에서는 or과 and가 필터링되지 않음 no=2&id=guest&pw=guest no=2&id=admin&pw=admin..

.htaccess 파일이란 ?

.htaccess : "hypertext access"의 약자로, 파일명 앞의 점은 숨김 파일이란 뜻이다. htaccess 파일을 사용하면 디렉토리별로 설정을 변경할 수 있다. 한 특정 디렉토리에 위치하며, 모든 하위 디렉토리를 포함한 해당 디렉토리에 영향을 미친다. Apache와 같은 웹 서버에서 클라이언트(웹 브라우저)에 접근할 때, 어떤 식으로 서비스를 제공할지 apace2.conf와 sites-enabled 가상 호스트 설정 파일을 통해 결정한다. 이 때, 서비스를 제공할 파일이 위치한 곳의 디렉토리 경로를 지정하게 되는데, sites-enabled에 있는 파일에서 블럭을 통해 이 디렉토리에 접근을 허용할지 말지, 어떻게 보여줄지 등을 정하게 된다. .htaccess파일은 sites-enabled..

기초 다지기 2020.03.11