V0W's Blog

i春秋巅峰极客赛第二轮WP

字数统计: 1,022阅读时长: 4 min
2018/08/26 Share

CTF

WEB

sqli
简单的sql约束攻击
注册账号admin,密码随意,然后登陆就得到flag了

flag{b5a1f9c5-ac30-4e88-b460-e90bcb65bd70}

MISC

关注公众号得到前半部分的flag。

flag{71d7ce04-197a-4d

winhex打开,没发现什么,但是开头是PK这是word的性质————word相当于格式文件XML和内容的压缩包,可以利用这一性质,解压word.zip
得到xml文件,在其中一个xml文件中发现另外一部分。
mark

b3-9c1d-0c419406a594}

后来发现原来在这里:
mark

flag{71d7ce04-197a-4db3-9c1d-0c419406a594}

CRYPTO

共模攻击
相同的n,不同的e1,e2加密得到不同的c1,c2
首先要对加密文件解成数字:

1
2
3
4
5
6
7
8
#coding:utf-8
from Crypto.Util.number import long_to_bytes,bytes_to_long
import base64

file1 = open("flag1.enc","rb").read()
file2 = open("flag2.enc","rb").read()
print bytes_to_long(base64.b64decode(file1))
print bytes_to_long(base64.b64decode(file2))

然后利用脚本共模攻击:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import sys   
sys.setrecursionlimit(1000000)

def egcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, y, x = egcd(b % a, a)
return (g, x - (b // a) * y, y)

def modinv(a, m):
g, x, y = egcd(a, m)
if g != 1:
raise Exception('modular inverse does not exist')
else:
return x % m

c1=11757177168629974661319129065020939259607843855964612407515015619551332717303594939284265148421101106538576564879770344246694669035164564635188309876801896156214909946098869029964618647606449218025915092461416329529723153695631060387903820322776063152970417682658882514448192870115306139048632667164375339647480060498038060662339943872320998391726896418231367745182167642401094985859083528539732718585607300300744481583877075988159078923393794888199752412273065186387778708588318818871255432956112609603017152148063465689319082652284861285738454428311471661017770501362483439955249552527930663707069794266908382237863
c2=2364848878397323871885597084235162950454738150033561990125608234733186785294327511676322556989693319543787881108157790541032502889824032246849038028277601291878651138223131738210948288040172974610279550123399373111991951111719314902078119305973622147396199257818150347936553495169543808071509800280778646769553776723985138633331947024508645378935223338224527962766707863670722941767067705851822587652625805245801727869961524972624327839027498877534264770109063202217409037083612774983213841234965045214820133529399280883524064963136158251681946077429913578531311243649928666453318570284124743168193304356485791847813
n=17362520124149736059291605717839814089431261833972408175766504894876091272021197374480215582589878198406028065354454242540322618614670160317701698407729515781811530180885334265851364490357884909336085410775168953942120359215038925025305363480538685487988827339463890539279008285241711326041868183805848503077373967082910932422798165242481154593794712639251157856102009630894845049984346776659339380886766804814959778048440996937820138560802077375885700500737699904011032451007341777160586467318264288370080315519305800247682611802774996999330812534723806925426052547128371180683265963525581842037399869323246530085399
e1=2333
e2=23333

s = egcd(e1, e2)
s1 = s[1]
s2 = s[2]
if s1<0:
s1 = - s1
c1 = modinv(c1, n)
elif s2<0:
s2 = - s2
c2 = modinv(c2, n)
m=(pow(c1,s1,n)*pow(c2,s2,n)) % n
print '{:x}'.format(m).decode('hex')

GETflag。

flag{4b0b4c8a-82f3-4d80-902b-8e7a5706f8fe}

靶场

偷梁换柱

赛题是那样无情残忍,无义无理取闹,稍有踟蹰,他就偷梁换柱。

  1. 提交后台admin用户的密码

  2. 提交系统管理员ichunqiu用户的全名

  3. 提交/tmp/access.log的内容的前16位

第一题 信息收集

.git源码泄露,githack打一波,发现数据库文件,拿到数据库的账户密码。

第二题 用户泄露

登录后台,发现有个上传功能,但是自动加上.png后缀,绕不过。

查看源码发现classes/picture.php中用到ImageMagick,利用现成的exp可以实现RCE,然后读取/etc/passwd即可。

CVE-2016–3714 ImageMagick参考链接

第三题 程序逻辑

同样是利用ImageMagick,读取/tmp/access.log即可。

反客为主

以静谋动,反客为主,掌握真正的大权,才能不任人摆布。

  1. 提交phpStudy目录下Documents.txt的内容

  2. 提交系统用户/ichunqiu的密码

  3. 提交ichunqiu用户Desktop根目录password.txt的内容

第一题 文件读取

打开后扫描发现有文件包含,直接包含Document.txt从而读取文件内容

第二题 抓取密码

利用包含漏洞,包含accesss,log来getshell,然后利用工具读取NTLM hash,反解得到明文

第三题 尝试登录

getshell后,发现权限是administrator,直接在菜刀中打开ichunqiu账户的桌面就可以看到

瞒天过海

目的不是为了瞒天,只是做出题目的一种手段。

  1. 提交后台管理员密码
  2. 提交mysql密码
  3. 提交C盘根目录password.txt

第一题-初探后台

发现存在注入,直接注入得知有users表,表中有id,login,password列,然后注入获得密码

第二题- 获得密码

注入点权限为root,直接读取mysql.user的password列,然后反解mysql的hash

第三题-DB提权

利用注入点直接load_file()写一个小马即可

暗渡成仓

虚实相接,需要出题者以声东击西的招式准备的歧路,找到正确的栈道。

  1. 提交后台管理员密码

  2. 提交系统管理员Hack的全名

  3. 超级管理员用户桌面根目录admin.txt文件的内容

第一题-初探后台

扫描发现存在上传点,上传php发现无法上传,利用大写即可绕过然后getshell

第二题- 获取用户

getshell后直接net user即可得到

第三题-日志收集

getshell后发现为最高权限,直接菜刀找到c:\documents and sttings\administrator\桌面\admin.txt,读取即可

CATALOG
  1. 1. CTF
    1. 1.1. WEB
    2. 1.2. MISC
    3. 1.3. CRYPTO
  2. 2. 靶场
    1. 2.1. 偷梁换柱
      1. 2.1.1. 第一题 信息收集
      2. 2.1.2. 第二题 用户泄露
      3. 2.1.3. 第三题 程序逻辑
    2. 2.2. 反客为主
      1. 2.2.1. 第一题 文件读取
      2. 2.2.2. 第二题 抓取密码
      3. 2.2.3. 第三题 尝试登录
    3. 2.3. 瞒天过海
      1. 2.3.1. 第一题-初探后台
      2. 2.3.2. 第二题- 获得密码
      3. 2.3.3. 第三题-DB提权
    4. 2.4. 暗渡成仓
      1. 2.4.1. 第一题-初探后台
      2. 2.4.2. 第二题- 获取用户
      3. 2.4.3. 第三题-日志收集