ctfshow

一、web89

af9282914ce0460c8de6e46b1cb14d1a.jpg

 看了下源码,是要传一个num,但是0-9都被过滤了

1d47f9862c59417588a562548d9a0397.jpg

 有两函数不认识搜一下

d33f84c612e64a6d8de944000510dc26.jpg

 05eb5f89b5364385a7bb5fd6bf05b4ee.jpg

 然后在前面见过preg_match是一个正则匹配式,又去了解了一下,数字被过滤了,那可以考虑一下数组绕过(看的别人的,hhh)

2e2d3da26c8642bc9048a7132ee72ebe.jpg

 随便传一个数组得到flag

8c44239b2ef84fdeb82f3e2557bdc68c.jpg

 二、web90

6b2e54c0243d44c7b6383c67e83d4eaf.jpg

 b2ee5ec42db243ee888c17187469eddf.jpg

 

分析代码,和刚才那个差不多,但是出现了一个===,还有intval函数的用法还是不太会,再查一下

3c8d31f9261244b1b4269b3cba82ee6a.jpg

fbee00a7d3d546b08c431d071c27ab0a.jpg 

f3d43241e0d94be884ca6716451c113e.jpg 

683cf1fd7306402cb5688e569ea8e3ca.jpg 

c58da7b753db4094a9a9d5bd1d96c117.jpg 

 传入八进制得到flag

e02191fe412443a8acc065957439927f.jpg  4b8cb4863bca483384b69caadd6c28e6.jpg

 试一下字母,也可以得到,然后从别的文章中了解到这个叫弱命令

634da32b39b14347ab7670eb862bcb6b.jpg

 三、web91

f91ced9321f443ab828915037f32b646.jpg

34671f44a9ca43cda7169c8cac7edda1.jpg 

 开始分析代码咯(从大佬博客摘抄的)


不区分(ignore)大小写

m
多(more)行匹配
若存在换行\n并且有开始^或结束$符的情况下,
将以换行为分隔符,逐行进行匹配
$str = "abc\nabc";
$preg = "/^abc$/m";
preg_match($preg, $str,$matchs);
这样其实是符合正则表达式的,因为匹配的时候 先是匹配换行符前面的,接着匹配换行符后面的,两个都是abc所以可以通过正则表达式。

s
特殊字符圆点 . 中包含换行符
默认的圆点 . 是匹配除换行符 \n 之外的任何单字符,加上s之后, .包含换行符
$str = "abggab\nacbs";
$preg = "/b./s";
preg_match_all($preg, $str,$matchs);
这样匹配到的有三个 bg b\n bs

g
全局匹配,查找所有匹配项

A
强制从目标字符串开头匹配;

D
如果使用$限制结尾字符,则不允许结尾有换行; 

e
配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行;

fd91492121024a00a4f098bd47cb4b17.jpg

 fa3780c9f2524372a4a0d9fbbb3c3f14.jpg

 0564599f070b4984aa10cd6f814b7bc9.jpg

 有这么详细的解释,再不理解就有点说不过去了,hhh

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值