Challenge-23

image.png
大概意思是传入 key1 key2
key1 的数据要=== Hello hacker!
key2 输入的数据md5 要大于 666666>666666
key3 要等于 666,但是有 intval函数 默认转成10进制
key4 如果大于0 ,k3 + k4 要小于 666
看着逻辑不是很难
一步步来

if(@file_get_contents($k1)==="Hello hacker!"){
        echo 'welcome! Hacker!<br>';

k1 要强等于 Hello hacker!
一开始想到用php://input 去写 但是发现没有用 ,php://input 是要传post 数据的 (放弃)
又想到数据流 data 可以写入数据 ,
data://text/plain,base64,....
key1=data://test/plain;base64,SGVsbG8gaGFja2VyIQ==
image.png
绕过第一步 key1

if(md5($k2)>666666*666666)

传入key2 的md5 值要大于 他们相乘的值
使用作者的值 :1518375
他的md5 值全是数字
93240121540327474319550261818423
然后也可以使用弱类型
字符串为: skwerl11
MD5值为 :1e21ff98693770b768e4a1a4a704811b
1e 是科学计数法 ,然后后面的字符会当成数字来比较,直到没有数字为止
然后就是ke3了

if(intval($k3)<666)
            {
                if($k3==666)
                {
                    echo 'Come on, flag is coming<br>';

k3 小于666 又要等于 666
采用 16进制
image.png
成功绕过 image.png
来到 key4

if($k4>0)
                    {
                        if(intval($k3+$k4)<666)
                            echo $flag;
                    }

小于 0 然后 相加还要小于 666
。。。。。
看了wp ,才了解到intval的表达范围是有限制的,取决于操作系统
可以使用溢出,
image.png

image.png
使用这个去绕过
999999999999999999999999999999999999999999999999996666
image.png
完整的payload :
key1=data://test/plain;base64,SGVsbG8gaGFja2VyIQ==&key2=skwerl11&key3=0x29a&key4=999999999999999999999999999999999999999999999999996666

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值