ctf.show

web21:【自定义迭代器】

先抓个包:发现authorization(授权)后面的basic认证很奇怪,用base64解码看看就是输入的用户名和密码

 返回包里出现乱码,但可以看到admin,猜测用户名就叫admin

 知道了爆破登录的形式是xxx:xxx    可以用自定义迭代器自己构造出payload的形式

爆破点就是登录(即用户名和密码)

解码xxx:xxx这个形式由3部分构成,所以把爆破构造成三部分

加上flag格式

因为授权 的是base64编码,所以密码也要用base64加密,又因为base64加密后末尾自带一个等号,所以不勾选加密=选项,否则可能造成读取不正确——>最后爆破……………………

basic认证:

1.Basic认证是一种较为简单的HTTP认证方式,客户端通过明文(base64编码格式)传输用户名和密码到服务端进行认证,通常需要配合HTTPS来保证信息传输的安全。

2.basic认证认证过程:HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份证的方法,当一个客户端向HTTP服务 器进行数据请求时,如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及密码进行验证,以决定用户是否合法。

客户端在接收到HTTP服务器的身份认证要求后,会提示用户输入用户名及密码,然后将用户名及密码以BASE64加密,加密后的密文将附加于请求信息中,客户端将用户名和密码用冒号合并,并将合并后的字符串用BASE64加密为密文

HTTP服务器在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64加密的用户名和密码),解开请求包,对用户名及密码进行验证,如果用户名及密码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及密码。

authorization(授权):

实现授权的方式有:cookie、session、token、OAuth

web22:【子域名爆破】

根据题目提示,爆破ctf.show这个子域名

https://phpinfo.me/domain:子域名查询网站

(省略尝试步骤) 点开第一个链接,看到标签上有flag

web23:

ubstr(string string, int a, int b):截取从数字a+1开始,截取b个字符intval()函数:获取变量的整数值

​即变量经过md5加密后要满足第2位与第15位相同和第18位相同第2位+第15位+第18位/第2位=第32位   整数值相等所以之后理论就是构造满足上面条件的脚本,运行就可以得出token,网上找了一个,运行出来时3j​

 web24:

 当随机数种子是确定的时候,用mr_rand()得到的随机数也是确定的,取整后得到的数作为变量r传入就好​

 用get方式传一下参数就可以得到flag

 web26:【弱密码】

打开,发现以下界面,先尝试安装

 

按照提示输入登录信息,点击开始安装没有反应,抓个包看看,发生错误,爆破密码试试

 随便导入一个弱密码字典,爆破,查看返回长度最与众不同的返回包,就可以得到flag

web27:【日期爆破】

尝试了再火狐抓包了好几次,都没抓到………………待续

 

 命令执行:

web29:【字符绕过】

1.利用 preg_match(),我们可以完成字符串的规则匹配。preg_match() 函数用于进行正则表达式匹配,成功返回 1(匹配一次,此函数在第一次匹配后将会停止搜索) ,否则返回 0(即没有匹配) 。

2.正则表达式是用来处理字符串的规则

  • 只能处理字符串
  • 它是一个规则:可以验证字符串是否符合某个规则(test),也可以把字符串中符合规则的内容捕获到(exec/match)

 先把flag.php文件复制到1.txt中,再打开1.txt即可打开得到文件里面的内容,因为flag被过滤,所以用?代替flag中一个字母,再打开1.txt文件【不知道什么原因,用cat打开文件就是不行????】

cp   文件1   文件2       (把位于文件1位置的文件复制到文件2中去)

 system('ls'):列出目录内文件

序号通配符含义
1*代表任意数个字符
2代表任意单个字符
3[abc]代表可以匹配 a、b、c 的任意一个
4[a-z]代表可以匹配从 a - z 范围内的任意一个

web30:【系统命令绕过】

1.PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()

1)不同点:system() 输出并返回最后一行shell结果。 
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。 
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。 
2)相同点:都可以获得命令执行的状态码 

2.查看文件内容可以使用cat、tac、nl这三个命令

cat:

1.1)cat filename 直接查看文件内容

1.2)cat -n filename 列出行号,空白行也会有行号

1.3)cat filename1.xxx filename2.xxx>filename3.xxx     将filename1和filename2合并为filename3,将多个文件夹合并为一个文件夹

2)tac:tac filename  反向查看文件内容,即“由最后一行到第一行反向在屏幕上显示出来

nl:

3.1)nl filename 除去空白行列出行号打印

用passthru('ls')列出表中所有文件

???用闭合代替system函数——不行;用passthru()代替system函数还是不行;用问号代替flag.php部分或者全部字符都不行

 

 反引号:作用相当于system,但是不会输出任何结果,所以前面要加echo

web31:【空格绕过】

1.PHP print_r方法可以把变量打印显示,使变量易于理解。如果变量是string,integer或float,将打印变量值本身,如果变量是array,将会按照一定格式显示键和元素。

 2.scandir()会扫描参数dir指定的目录文件并返回指定目录中的文件和目录的数组。

3.dirname(_FILE_)

php中定义了一个很有用的常数,即:_file_这个内定常数是所在php程序文件的完整路径(路径+文件名)。即使这个文件被其他文件引用(include或require),__file__始终是它所在文件的完整路径,而不是引用它的那个文件完整路径。

4.eg:当前文件在是放在(d:\www\)下,文件名是test.php

<?php

echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\www\test.php

echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D:\www\

echo dirname(dirname(__FILE__)); //取得当前文件的上一层目录名

?>

5.php里面空格的正则绕过:%09

6.正则表达式:使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

相对于上一题,多过滤了cat sort  shell  点号  空格   单引号

 web32:

相对上一题,多过滤了反引号,分号,echo,括号!!!

x先让参数1逃逸,将1包含近参数c中

注:写?c=include%0a$_GET[1]?>&1=flag.php不能得到flag,因为flag.php只是包含到变量c中,但是因为没有分号分隔且没有输出flag的变量,造成无法输出变量????,所以用文件包含来做

 

 hackbar里面有一个文件包含插件LFI

 执行出来是一行base64编码,解码出来就可以得到flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值