Web Hacking 65

[Lord of SQL Injection] los zombie_assassin

strrev함수는 문자열을 뒤집어서 반환하는 함수다. addslashes함수로 싱글쿼터를 입력하면 백슬러시가 추가된다. id=admin' 을 입력하면 다음과 같이 된다. 이렇게 입력해도 안되는 것을 보니 저 백슬러시를 처리해야 할 것 같다. ?id=nimda&pw= %231=1 ro ' 싱글 쿼터랑 백슬러시랑 이것저것 써봤는데 백슬러시를 맞추기가 힘들었다. 대신 더블 쿼터를 쓰면 더블 쿼터 뒤의 백슬러시가 그 뒤의 싱글 쿼터를 문자로 취급하고, and pw='까지 id에 들어가며 or 1=1#를 쿼리로 취급해 문제를 해결할 수 있다. id="&pw=%23 1=1 ro id='"\' and pw='or 1=1#

Web Hacking/LoS 2021.08.22

[Lord of SQL Injection] los succubus

id와 pw에서 싱글쿼터만 필터링하고 있다. 문제 의도가 싱글쿼터만 우회하면 되는 것 같아 찾아보았다. https://g-idler.tistory.com/61 백슬래시를 사용 id=\&pw= or 1 %23 백슬래시 때문에 뒤에 있는 싱글쿼터는 문자로 인식된다. 따라서 \' and pw는 문자열로 인식되고 뒷 부분이 쿼리로 인식된다. 다만 이번 문제같은 쿼리에 제한적으로 사용 가능하다고 한다. select id from prob_succubus where id='{$_GET[id]}' and pw='{$_GET[pw]}

Web Hacking/LoS 2021.08.15

[Lord of SQL Injection] los assassin

$_GET[pw]에서 '를 필터링하고 있다. 이번 문제는 like를 사용하는 문제다. %1% → 1이 들어가는 것 %1 → 끝이 1인 것 1% → 처음이 1인 것 을 출력해준다. 우선 1부터 0까지 차례차례 입력해보았다. 1, 2, 9, 0에서 hello guest를 띄웠다. 그 다음으로는 처음이나 끝자리부터 맞춰보려고 했는데, %으로 입력하면 url인코딩으로 바뀌어 입력되길래 %를 맨뒤에 입력해주는 방향으로 맞춰보았다. 첫자리는 9 두번째는 0 세번째 자리까지 맞추자 클리어할 수 있었다. pw=902%

Web Hacking/LoS 2021.08.03

[Lord of SQL Injection] los giant

이전과는 다른 느낌의 쿼리다. $_GET[shit]에 들어가는 문자열 길이가 1을 넘으면 안된다 일단 아무값이나 넣어봤다 ?shit=1 중간에 공백을 넣어 쿼리를 완성시키면 되는 것 같다. 길이 조건이 거슬린다. \n, \r, \t등이 필터링 되어있다. 공백우회방법중에 %0a, %09, %0d, /**/, + 등을 시도해봤는데 통하지않았다. %0b와 %0c로 해결할 수 있었다. https://posix.tistory.com/42 vertical tab과 form feed라고 한다. ?shit=%0b

Web Hacking/LoS 2021.08.03

[Lord of SQL Injection] los bugbear

pw에서는 '를, no에서는 substr, ascii, =, or, and, like, 0x, 공백, '를 필터링하고 있다. 각종 우회방법을 사용해 hello admin을 띄워냈다! "는 필터링하고 있지 않으니 '대신 사용하면 되고, =은 instr함수로, or은 ||으로, 공백은 %0a로 우회했다. no=1%0a||%0ainstr(id,"admin")%23 이번에도 패스워드는 8자리였다. 부등호로 우회했다. no=1%0a||%0ainstr(id,"admin")%0a&&length>7&&length

Web Hacking/LoS 2021.08.01

[Webhacking.kr] challenge{old-26}

아무것도 없는 화면에 소스코드만 뜬다. 소스코드 view-source 이 부분을 보자. id값으로 admin이 들어가야 문제가 풀린다. admin을 필터링하고 있기 때문에 그대로 넣을 수는 없다. 그리고 urldecode 함수도 사용해 다시 저장하는 것을 볼 수 있다. id=admin을 그대로 보내면 당연히 no!가 뜨고, url인코딩을 해서 보내도 no!가 뜬다. ?id=%61%64%6D%69%6E 자동으로 디코딩이 되어 admin으로 바뀌는 것을 볼 수 있다. 여기서 한번 더 url인코딩을 하면 될 것 같다. ?id=%2561%2564%256D%2569%256E 문제를 해결할 수 있었다.

[Webhacking.kr] Challenge{old-02}

정보를 찾기 위해 사이트를 살펴봤다. 먼저 접속했던 시간이 주석으로 뜨는 것을 알 수 있다. 왠지 admin.php로 들어가고 싶어지는 문구다. time이라는 쿠키값도 존재한다. 먼저 admin.php로 들어가면 다음과 같이 입력창이 나온다. 아무 값이나 입력하면 wrong password라는 알림창이 뜬다. 다른 정보도 딱히 없어서 패스워드를 알아내 입력해야 할 것 같다. 원래 페이지에서 특이점은 쿠키값 뿐인데, 값을 좀 변경해보았다. 소심하게 1을 뺸 값을 입력하면 주석이 바뀌는 것을 알 수 있다. 처음에 표시됐던 시간보다 1초가 줄었다. 이것으로 뭔가 알아내는 것 같다. 0을 입력하면 원래 쿠키값으로 돌아가길래, 1을 입력했더니 2070년이 나왔다. true를 입력해보았다. 1을 입력했을 때와 같은..

[Lord of SQL Injection] los darkknight

admin의 pw를 맞춰야 해결이 가능하다. no에서 substr, ascii등의 함수를 필터링하고 있다. = 등의 문자도 필터링하고 있다. pw는 '를 필터링하고 있다. 이번에도 blind SQL인젝션 같은데 필터링이 많아져 복잡하다. 우선 여러가지로 시도해보았다. (=은 like로 우회했다.) pw=2341&no=12 or id like admin %23 생각해보니까 더블쿼터를 필터링하지 않아 사용할 수 있을 것 같다. pw=2341&no=12 or id like "admin" %23 이제 비밀번호를 알아내보자. substr은 mid함수로, ascii는 ord함수로 우회할 수 있다. https://g-idler.tistory.com/61 비밀번호 길이 알아내기 pw=2341&no=12 or id li..

Web Hacking/LoS 2021.07.18