-
-
[旧帖]
菜鸟求助两道ctf题:一道web一道取证题
0.00雪花
-
发表于:
2016-12-4 11:01
4626
-
[旧帖] 菜鸟求助两道ctf题:一道web一道取证题
0.00雪花
本人前天入的ctf坑,开始做题就遇到麻烦。。。
第一道题是这个网站https://chc.cs.cornell.edu/challenge/web/login?next=%2Fchallenge%2Fweb%
登录名为CHC, 密码OverErryThing
server的源文件是用python和flask写的。楼主只有java的spark的经验,对python不是很了解。但是发现了一段我认为比较可以的代码:
@app.route('/')
@login_required
def home():
response = render_template('home.html', name=home)
if session.get('_flashes'):
del session['_flashes']
if session.get('user_id'):
del session['user_id']
if session.get('_fresh'):
del session['_fresh']
session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=120)
session['Flag'] = os.environ['FLAG']
return response
其中
session['Flag'] = os.environ['FLAG']
,显示了其中有个session是flag。我猜测只要进入到这个session就可以解题。但是我刚刚接触sqli和xss,还没有很熟悉的技巧。我目前分析这个网站只有三个切入点:登录页面的用户名密码,还有原链接的next这个parameter。源代码使用的是
username = request.form['username']
。我在网上看的例子还没有对request.form进行成功切入的。不知道各位大神有没有想法。另外next这个parameter使用的是
return redirect(request.args.get('next'))
,args.get来获取。args.get我在网上看到了几个简单切入的例子,但是这个代码中是包在了一个redirect的方法里,所以我模仿例子尝试了几遍都没有成功,不知道是不是就是这个原因。
另外一道forensics题给了一个pcap文件。文件中两个用户在进行IRC交流。其中提到了private key, public key及exponent。很明显他们要进行rsa加密过的对话。用户A发送了以下request:
84ec951266e80063d17865728e63c2d7effbd5a68cfb4e2bf03009fa6e37022f1e321ed2d30e5e62
7c368ee65495ce00eac18c436a00e8f561a420eb38e6687745c2300f4107cc55053b14a76ed14e7e
f3a99ebf8bc248220454c8eeacea3f8f217131205f364189bca2d13a4a9e33427bb118aecfa81ae8
292be020a877d081
其中第一行80个digit的字符串为第一个frame, 第二个及第三个字符串在同一个frame里的两个request,第四个最短的字符串为最后的request。随机用户A表示sorry,这个是他的private key,他发错了。随后他以同样各式发了四个request,明显就是公匙。最后他说exponent是正常的10001,这里我判断应该为十六进制,十进制为65537。我的问题就在于这四个request如何合成一个有效的rsa密匙?我猜测他们是hex hash,然后把四段concatenate后十六进制转十进制获得了一个很大的数字。问题在于我把得到的公匙密匙和exponent放进我在我的入门cs课做的rsa里时decrypt出来的都是乱码。我不知道这里我有没有做得不对的地方。
用户B给用户A的response也是十六进制的,以下摘抄一段。
0x58 0x63 0xfc 0xbc 0xe2 0xca 0x50 0x5f 0xcd 0xb4 0x34 0xc9 0x9c 0x79 0x9e 0xda 0xeb 0x8e 0x67 0xaf 0x85 0x2d 0xab 0x6d 0x9c 0x49 0x32 0x05 0xe0 0x7d 0xf5 0x28 0x9d 0x34 0x45 0x3b 0xdd 0xb2 0xf0 0xde 0x74 0x30 0x11 0xda 0x5c 0xeb 0x4a 0x9f 0xaf 0x50 0xb4 0xe5 0x1b 0xb0 0x1e 0x7d 0xe2 0xe6 0x77 0xbe 0xd3 0x5d 0x85 0x6b 0x84 0x47 0xc1 0x1f 0x6b 0x3e
我手动去掉0x后在hexedit.com转成了string,再拿给我的java decrypt的。这里我有没有做错的地方?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课