PHP2
[题目描述]暂无
[题目场景]
这句话的意思是“你能告诉我这个网站吗?”,首先我们先获取php的源代码 在url后面输入/index.phps
我们可以发现这个代码不完整,打开该页面的源代码
我们可以看到php代码前面一部分被注释掉了,现在我们把代码复原
我们可以看到我们需要传入参数id,id的值有两个要求
- 不满足"admin"===$_GET[id]
- 通过$ _GET[id] = urldecode($ _GET[id]);实现$_GET[id] == “admin”
当传入参数id时,浏览器在后面会对非ASCII码的字符进行一次urlencode,在本段代码中还要再进行一次urlencode,所以在输入参数id的值时需要二次编码
admin的一次编码为:%61%64%6d%69%6e
admin的二次编码为:%2561%2564%256d%2569%256e
所以参数id的值为%2561%2564%256d%2569%256e
Ps:1.也可以只使一个字母进行转码,其余字母保持不变
2.url编码的值是%+字符的ASCII码值的16进制
Unserialize3
[题目描述]暂无
[题目场景]
分析代码我们可以得出这道题用code参数传参,且参数值需要绕过_wakeup()函数
先进行序列化操作
设$y=new xctf(“flag”)
得到 O:4:“xctf”:1:{s:4:“flag”;s:3:“111”;}
当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行。所以将:1:改为:2:即可绕过_wakeup函数
即code=O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;}
Upload1
[题目描述]暂无
[题目场景]
我们可以看到这是一个上传文件的窗口,先查看源代码,可以看到js代码
可以知道文件只能上传.jpg和.png文件 如果上传别的种类的文件则会有弹窗提示“请选择一张图片文件上传”。所以我们需要绕过js前端
首先我们在地址栏输入:about:config
将这个选项布尔值 true 改为 false
此时就可以绕过js前端限制
我们写一个一句话木马
其中pw 即为密码
现在将php文件传上去,得到
验证一下会不会报错
不会报错 接下来就连接中国菜刀
Supersqli
[题目描述]随便注
[题目场景]
我们可以看到一个查询框,随便测试两个数字看一下
我们先判断是什么类型的注入
- ‘ --+;返回正常
- ‘ and 1=1 --+; 返回正常
- ‘ and 1=2 --+; 返回数据与原始请求有差异。
可以看出存在SQL数字型注入
发现对select、update、delete、drop、insert、where、. ,这些字符和单词进行了过滤。尝试大写绕过等方式,发现无法绕过。
我们可以用sqlmap获取当前数据库的名称
但是我们无法获取数据库中表的名称
我们可以用堆叠注入的方法获取表名
查询表中的字段
我们可以看到在表名为1919810931114514中有flag字段
查询表中数据 我们可以用预处理的语句来获取 预处理语句:1’;use supersqli;set @sql=concat(‘s’,'elect * from 1919810931114514
');PREPARE pre FROM @sql;EXECUTE pre;–+
Easytornado
[题目描述] Tornado 框架
[题目场景]
我们依次打开这三个文件
我们可以看到flag就在/fllllllllllllag这个文件中
看到render我们可以想到SSTI tornado render模板注入
url中的结构为file?filename=* * * * &filehash=*******
从第一个文件我们可以知道filename=/fllllllllllllag,
从第三个文件我们可以知道filehash=md5(cookie_secret+md5(filename))
我们先输入/fllllllllllllag试试看
可以看到报错了 且页面的返回是由msg的值决定的,我们尝试修改msg的值
页面返回“1”,所以可以形成注入
我们现在需要知道cookie_secret的值是什么。
render是一个类似模板的东西,可以使用不同的参数来访问网页,在tornado模板中,存在一些可以访问的快速对象,例如{{ escape(handler.settings[“cookie”]) }}
这个handler.settings对象handler 指向RequestHandler
而RequestHandler.settings又指向self.application.settings
所以handler.settings指向RequestHandler.application.settings
这里就是我们的环境变量,我们就从这里获取cookie_secret
接下来需要完成的是md5(cookie_secret+md5(filename))
利用MD5加密工具
就可以得到filrhash= 194cc042a0f104f9ba4f82304bbfd4b2
所以url为
http://220.249.52.133:32263/file?filename=/fllllllllllllag&filehash=194cc042a0f104f9ba4f82304bbfd4b2