我是靠谱客的博主 大力帆布鞋,最近开发中收集的这篇文章主要介绍bugku 26 ~ 27write up(web),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、第26题(过狗一句话)

在这里插入图片描述
打开链接发现一篇空白,抓包也没什么发现。那么我们只能分析上面那段代码了
explode()函数就是把$poc变量用#号来分割开来。那么$poc_2就是assert,他和最后一句代码构造成了assert()函数,assert函数功能跟eval类似,可以把里面的内容当作代码来执行。

那么我们构造payload为?s=print_r(scandir('./')),扫描出描本级目录下的文件。(这其实是一种xss攻击)
在这里插入图片描述
发现了flag_sm1skla1.txt文件。访问该文件即可得出flag
在这里插入图片描述
拓展:
我们扫描上级目录

http://123.206.87.240:8010/?s=print_r(scandir(%27../%27))

在这里插入图片描述
根据目录结构应该是linux系统,hosts文件应该在etc里面

http://123.206.87.240:8010/?s=print_r(readfile(%27../etc/hosts%27))

在这里插入图片描述

一、第27题(字符?正则?)

打开题目,是一段代码

 <?php
highlight_file('2.php');
$key='KEY{********************************}';
$IM= preg_match("/key.*key.{4,7}key:/./(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){
die('key is: '.$key);
}
?>

分析这段代码可以发现,只要我们构造出一个符号条件的KEY作为参数传入即可得到flag,突然发现我的正则学了和没学一样。

这边先介绍下

preg_match — 执行一个正则表达式匹配

preg_match ( $pattern , $subject , $matches )

搜索subject与pattern给定的正则表达式的一个匹配.

参数 :

pattern : 要搜索的模式,字符串类型(正则表达式)。
subject : 输入的字符串。
matches :(可有可无)如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。

返回值 :

preg_match()返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后 将会停止搜索。preg_match_all()不同于此,它会一直搜索subject 直到到达结尾。 如果发生错误preg_match()返回 FALSE。

实例1:
$label = 'content/112';
$a = preg_match('#content/(d+)#i', $label, $mc);
var_dump($a);
var_dump($mc);
输出:
int(1)
array(2) {
[0]=>
string(11) "content/112"
[1]=>
string(3) "112"
}

开始分析下题目中的正则表达式
定界符:/和/(一般来说是这两个,其实除了和字母数字其它的只要是成对出现都可以看做定界符,比如##、!!之类的);

. (一个点):表示可以匹配任何字符;
*
:前面的字符重复零次或多次;
{n,m} :最少匹配 4 次且最多匹配 7 次,结合前面的 . 也就是匹配 4 到 7 个任意字符;
 (反斜线):后面的字符被转义;
[a-z] :在a到z中匹配 ;
[[:punct:]] :匹配任何标点符号;
/i
:表示这个正则表达式对大小写不敏感;

我们构造id=keykeyaaaakey:/a/keyz;
在这里插入图片描述

最后

以上就是大力帆布鞋为你收集整理的bugku 26 ~ 27write up(web)的全部内容,希望文章能够帮你解决bugku 26 ~ 27write up(web)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部