磐云PY-B8 网页注入

文章目录

  • 1.使用渗透机场景windows7中火狐浏览器访问服务器场景中的get.php,根据页面回显获取Flag并提交;
  • 2.使用渗透机场景windows7中火狐浏览器访问服务器场景中的post.php,根据页面回显获取Flag并提交;
  • 3.使用渗透机场景windows7中火狐浏览器访问服务器场景中的numerical.php,根据页面回显获取Flag并提交;
  • 4.使用渗透机场景windows7中火狐浏览器访问服务器场景中的filter.php,根据页面回显获取Flag并提交;
  • 5.使用渗透机场景windows7中火狐浏览器访问服务器场景中的fan目录,根据页面回显获取Flag并提交;
  • 6.使用渗透机场景windows7中火狐浏览器访问服务器场景中的terminator.php,根据页面回显获取Flag并提交;

1.使用渗透机场景windows7中火狐浏览器访问服务器场景中的get.php,根据页面回显获取Flag并提交;

访问网页,使用?flag=flag即可

2.使用渗透机场景windows7中火狐浏览器访问服务器场景中的post.php,根据页面回显获取Flag并提交;

将网页链接复制到菜刀,新建标签页,粘贴链接
然后点击右边的P切换到post模式,在post输入框中输入flag=flag

3.使用渗透机场景windows7中火狐浏览器访问服务器场景中的numerical.php,根据页面回显获取Flag并提交;

看判断条件,is_numeric是用来检测判断变量是否为数字或数字字符串的函数,然后前面加了个!。
而对于空字符%00,无论%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。
就要让他判断既是f的值为666,但是又不能是数字类型的。
所以后面跟+也就是%20或者直接%00即可,这样既是666,也不再是数字类型的。
但是实测,666后面跟任意一个字母也可以,例如f=666a

4.使用渗透机场景windows7中火狐浏览器访问服务器场景中的filter.php,根据页面回显获取Flag并提交;

URLdecode二次转码。第一个if到exit之间说的是如果id为flag,就echo然后退出程序。
eregi()指的是在后面的字符串中搜索前面的内容,如果匹配成功就返回TRUE,否则返回FALSE。
第二个if中的urldecode()指的是将括号内的内容进行转码(16进制转文本),如果还是一个flag就输出flag。
这时候利用二次转码,浏览器转码一次,URLdecode()在转码一次得到flag。
使用?id=%2566lag。其中%2566=%25%66=%f,合起来就是%flag。

5.使用渗透机场景windows7中火狐浏览器访问服务器场景中的fan目录,根据页面回显获取Flag并提交;

使用http://172.16.101.12/fan/index.php/index.php即可获取flag
我也不知道为什么要这么干,但是这个确实是可以用的方式

6.使用渗透机场景windows7中火狐浏览器访问服务器场景中的terminator.php,根据页面回显获取Flag并提交;

这个是属于条件竞争,要在sleep的10秒内将flag获取到,并且还是获取md5加密后的1000个文件内容,所以需要写Python脚本去跑去获取。别人给的方法脚本:

import requests
import re
import hashlib

for i in range(0,1001):
    m1 = hashlib.new("md5")
    m1.update(str(i).encode(encoding='utf-8'))
    url='http://172.16.101.12:8181/'+m1.hexdigest()+'.txt'
    r = requests.get(url)
    if(r.status_code!=404):
        print(i)
        print(url)
        print(r.status_code)
        print(r.text)
        break
    else:
        print(i)
        print("404"))

但是呢,我发现这个脚本太长了,有很多没必要以及部分可以缩短的内容。修改过的脚本不算空行只有8行,在比赛的时候特别适合。
不过我马上要比赛了,并且不确定这回比赛是否有这种题,所以优化后的代码先不放出来,等比完赛再说。

你可能感兴趣的:(磐云PY-B8,做题记录,磐云,PY-B8,网页注入)