第三届上海市大学生网络安全大赛彼岸花战队Writeup

2017 年 11 月 12 日 FreeBuf 幽夜寒香

我在等风也等你,一个半文艺少年 wing

WEB

web1

id=1这里这个参数下意识是有注入的,我折腾一会儿后发现过滤了很多东西,’,=.group_concat(),uadatexml(),union我就只测试了这几个,没得办法,炸裂。QAQ。主要是你把=号过滤掉这就恶心了。又折腾一会儿,用到了上次在cos的圈子里分享的报错注入,这很ok。

ExtractValue这个函数原理我就不说了,懒。那下面就好办了,写个py爆表名。

有f14g表,那么肯定有f14g这个列但是返回来的长度有限制,无法看到全部的flag

是不是少了个},Bingo,这里做了限制。其实我一开始是这么干的。

是我想太多,然后我用mid函数ko掉了。

web2

这题没啥意思,坑了我半天,原意应该是考git泄露,但是直接在action那里传参flag就行了。

web3

Emmm,打开连接,悄悄咪咪地掏出的扫描器,我不会说是7kb表哥的,哈哈。有一个robots.txt,还有admin.php,file.php,index.php访问robots.txt,有一个code.zip下载打开后发现是用phpjm加密的。这里我要自黑下,我还是太年轻,在网上找了半小时解密网站后,都TM要钱。我只好花九块钱去解密了,其实virink给我一个脚本的,但是我编译失败,时间紧急,只能花钱了。九块钱,一个手抓饼和一瓶真果粒啊,呜呜呜呜呜~后面才知道p牛博客有解密的方法,次奥。

先看index.php

思路就是爆破随机数种子先进入后台,再php伪协议读flag,爆破脚本:

将得到的private传进去,进后台

出现 No Auth,看下源码

利用弱类型

绕过后源代码有这个,看看file.php源码:

Emmm,继续绕正则,post提交源码里给的auth

得到flag

MISC

流量分析

打开流量包,发现FTP获取了ssl解密文件key.log和flag.zip,flag.zip需要密码。这里是有两个flag.zip,一个假一个真,假的让你关注加密的数据包,找到解真的数据包的密码。。然后导入wireshark,将ssl解密。可能有很多人不知道怎么解密ssl,看链接:

https://www.trustwave.com/Resources/SpiderLabs-Blog/How-To-Decrypt-Ruby-SSL-Communications-with-Wireshark/

解密后得到一个好听MP3

这个MP3后面有杂音,那就这里面有东西了。观察频谱

Key:AaaAaaaAAaaaAAaaaaaaAAAAAaaaaaaa!

这个就是密码了。

Clemency

Emmm,这题辛苦队友了,为你俩打call。查询得知这个词是DEF CON CTF2017上拿出来的新的架构程序,特点有一字节9位、中端序存储等在官方链接 https://blog.legitbs.net/2017/07/the-clemency-architecture.html 下到官方给出的调试器,通过它可以运行题目文件clemency.bin,github上有很多IDA的反汇编脚本,我用的这个 https://github.com/cseagle/ida_clemency将脚本放入文件夹下,重新打开进行反汇编即可。注意处理器要选择提供的Clemency,而不是默认的MetaPC。

然后就可以得到反汇编的程序了:刚才的下载链接里有官方文档,讲解各个命令、和通讯等等模拟器在linux下使用,-d可以调试,调试状态下输入?可以得到各个操作的指令,与gdb基本类似:

直接运行提示需要flag文件,于是在同目录下创建flag文件,向其中写入内容模拟器自动将其作为输入接收,送入clemency程序

t单步运行,逐步跟踪可以发现,程序中对输入没有进行任何操作,而是直接在5b06处将输入转存入DataSent,发送区

调试器跟踪可以看到地址:

R02就是DataSent,字节方式可以看到内容不变最前面那一段乱码就是输出内容

但是模拟器输出的却并不是flag文件中的内容问题在于字节转换,可以看到,字节方式存储都是031,在原来的8位字节前补了一个0dt可以看到clemency的内存:

就是将31转成二进制后前补0,成为clemency的一个字节(9位),然后按照中端序存储方式(9-18,0-9,18-27)存储:

这样子生成clemency下的3个字节,作为x86架构下则是3个字节+3位,最后一个比特不变,第二个比特最后补上了一个0,第一个比特最后则补上了两个0十六进制表示时由于每个字符表示8位,所以最左边还多出了3位,由第一比特的高位决定值是0或1

按照这个思路可以得到clemency的内存表示,然后输出的时候将它们化成二进制,每8位做一个byte进行chr()

说到底就是每个比特前补0,然后重新分组输出

逆向脚本就简单多了,直接每9位读一次,刨掉第一位然后转字符即可:

得到flag

醒来看到大佬的WP就傻了其实github上的IDA脚本里面为了反汇编所以已经做了clemency的字节和端序转换,因此用IDA直接打开flag.enc就能得到flag……

杂项题硬生生被做成了逆向题OTZ

不过话是这么说,如果给出的bin里对输入进行了变换,这种方法就解不出flag了嘛,所以逆bin还是挺有必要的

Reverse

Crackme

查壳发现有NsPack,百度下来脱壳机搞定IDA反编译看到算法

将两个数组Dump下来写脚本可得:

Juckcode

反编译不全,在OD中运行跟踪发现有大量花指令阻碍F5于是一步一步跟先打开”flag”文件,失败则报错,于是创建一个文件给他接着在sub_401350函数中进行了大量运算,后来看结果发现是b64再往下看,发现进行了四次b64+略微处理的操作观察sub_401350的call可以发现四次调用b64的地址:

B64的调用向上翻一点就能找到,分别是+0x40、<<7和-0x9e

得到4个字符串以后:

将它们进行了拼接:

然后对它进行b64decode以后,通过sprintf(“%x”)以十六进制形式写入字符串,最后每个字符+0x10后输出

加密看起来很复杂,解密就很简单了,因为得到-0x10再b64encode以后的合成字符串只要提取其中一个就可以解出明文了。于是写出逆变换脚本:

Pwn

p200

和pwnablde.kr上的UAF一题很像,放一个分析很详细的网址:

http://blog.csdn.net/qq_20307987/article/details/51511230

Python脚本截图:

FLAG:flag{d41d8cd98f00b204e9800998ecf8427e}

CRYPTO

Classical

Ld hcrakewcfaxr, f hofjjlhfo hlaxuc lj f krau ev hlaxuc kxfk zfj tjui xljkeclhfoor gtk dez xfj vfooud, vec kxu pejk afck, ldke iljtju. Ld hedkcfjk ke peiucd hcrakewcfaxlh foweclkxpj, pejk hofjjlhfo hlaxucj hfd gu acfhklhfoor hepatkui fdi jeoyui gr xfdi. Xezuyuc, OrmkO3vydJCoe2qyNLmcN2qlpJXnM3SxM2Xke3q9 kxur fcu foje tjtfoor yucr jlpaou ke gcufn zlkx peiucd kuhxdeoewr. Kxu kucp ldhotiuj kxu jlpaou jrjkupj tjui jldhu Wcuun fdi Cepfd klpuj, kxu uofgecfku Cudfljjfdhu hlaxucj, Zecoi Zfc LL hcrakewcfaxr jthx fj kxu Udlwpf pfhxldu fdi guredi. F btlhn gcezd veq mtpa eyuc kxu ofsr iew.

简单替换密码,这个网址解一下https://quipqiup.com/

0 -2.660 In cryptography, a classical cipher is a type of cipher that was used historically but now has fallen, for the most part, into disuse. In contrast to modern cryptographic algorithms, most classical ciphers can be practically computed and solved by hand. However, Ly?tL3fvnSRlo2?v?I?r?2?imSH??3?h?2Hto3?9 they are also usually very simple to brea? with modern technology. The term includes the simple systems used since Gree? and Roman times, the elaborate Renaissance ciphers, World War II cryptography such as the Enigma machine and beyond. A ?uic? brown fo? ?ump over the la?y dog.

中间有?,手动替换一下,得到中间的密文

LyjtL3fvnSRlo2xvKIjrK2ximSHkJ3ZhJ2Hto3x9

根据上面那段话的意思,推测有多种加密混合,且含有凯撒加密,尝试后得到flag

FLAG:

flag{classical_cipher_so_easy}

rrrsa(300pt)

Emmm,这题赛后知道是一个朋友出的,可把我队友累坏了,喵喵喵。首先是md5扩展攻击拿到d和e,md5扩展攻击可以用hashpump使用方法参考猫神的Blog:

http://www.cnblogs.com/pcat/p/5478509.html

因为有\00,用pwntools发送一下

这里我们得到了一个失效的d和e,和新的e,加上一个没变的n,注意这里重新生成密钥的时候没有改变n的值,于是我们可以算出p和q,可以看这个网址:

https://www.40huo.cn/blog/get-pq-from-ned.html

求出此时的

然后用这个d去解密

附:

差一题AK的队伍的WP http://pan.baidu.com/s/1bpuDE83 密码:wing

* 本文作者:幽夜寒香,转载请注明来自FreeBuf.COM

登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
16+阅读 · 2019年8月30日
今日头条技术架构分析
互联网架构师
11+阅读 · 2019年8月19日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
ZigBee 网络安全攻防
计算机与网络安全
14+阅读 · 2019年4月15日
抖音爬虫
专知
3+阅读 · 2019年2月11日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
爬了自己的微信,原来好友都是这样的!
七月在线实验室
4+阅读 · 2018年1月18日
Precise Detection in Densely Packed Scenes
Arxiv
3+阅读 · 2019年4月8日
3D-LaneNet: end-to-end 3D multiple lane detection
Arxiv
7+阅读 · 2018年11月26日
Arxiv
22+阅读 · 2018年8月30日
Neural Arithmetic Logic Units
Arxiv
5+阅读 · 2018年8月1日
Arxiv
3+阅读 · 2018年5月21日
VIP会员
相关资讯
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
16+阅读 · 2019年8月30日
今日头条技术架构分析
互联网架构师
11+阅读 · 2019年8月19日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
ZigBee 网络安全攻防
计算机与网络安全
14+阅读 · 2019年4月15日
抖音爬虫
专知
3+阅读 · 2019年2月11日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
爬了自己的微信,原来好友都是这样的!
七月在线实验室
4+阅读 · 2018年1月18日
Top
微信扫码咨询专知VIP会员