攻防世界 Training-WWW-Robots/robots/php2/simple_php(还在更新中)

本文讲述了通过解析robots.txt协议,逐步解码和理解PHP脚本,利用URL编码、MD5和科学计数法技巧,解决涉及字符串处理、加密和数组操作的旗子获取过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Training-WWW-Robots

robots协议保存在robots.txt文件里,是机器人排除协议,那我们就直接访问一下robots.txt

他说不允许访问/fl0g.php,那我们就在试一下

获得flag

robots

打开url是个白面网站,我们还是直接访问robots.txt

在访问一下flag_1s_h3re.php

获得flag

php2

你能登陆吗?

通常php的脚本在.php上,比较经典和常见的就是index.php,尝试访问一下

能够正常访问,说明是存在,php文件源代码是在phps里存放,再次访问

然后查看页面源代码

7.8行是页面源代码的核心,urldecode是PHP函数,解码经过URL编码的字符串,解码回原始的形式,url编码中的某些字符被替换成%后面跟俩位十六进制数

urldecode可以对admin进行全部或者部分编码,a就成了%61,%又会被url再次进行编码就成%25

所以admin成了%2561dmin

simple_php

看代码,a得等于0才会输出flag1,那就直接访问

获得了前半截flag,后半截就得满足b,赋予b非数值型的字符串同时参数值要大于1234,于是可以使用数字加字母混合的方式,他在判断时会将字符给抹去,然后再进行判断

easyphp

进来就是一大串代码,先看最后的if,说key1和key2都等于1才会出现flag,要满足这个条件的话需要abc都满足,再看第一个if,a得>6000000还得<=3,这就得科学计数法了,1e8就可以

再看b,md5,最后几位还得是8b184b这个需要写一个脚本去运算,可以找一个在线工具,得到结果53724

import hashlib 
  
for i in range(100000):  
    m = hashlib.md5()  
    m.update(str(i).encode())   
    h = m.hexdigest()  
    if h[-6:] == "8b184b":    
        print(i) 
        break  

现在在来考虑c,c是最麻烦的一个,m不能是数字,得大于2022,随便加个字母就可以

Array_search():查找数组中的元素并返回其下标。
元素n的下标是DGGJ
但是如果n的下标是DGGJ,程序就会终止,必须得绕过,array_search()在查找元素的时候是进行弱类型比较,在PHP里字符串==0是成立的,即“DGGJ"==0是成立的,因此,要保证在c["n"]中有0,即可绕过array_search的判断。

然后就得构造成?a=1e8&b=53724&c={"m":"2023b","n":[[],0]}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值