最后一道题。

  这道题提示比较少,一点也不友好。F12也没有什么线索。无奈之下用御剑扫下后台,发现了一个叫robots的txt文件。

  打开robots.txt文件,可以得到一段代码,如下图所示。

  审查代码,会发现这里有一个文件包含漏洞,我们可以利用filter以base64编码的方式读出backdoor.php。于是在url加上:

?text=php://input&file=php://filter/convert.base64-encode/resource=backdoor.php,得到一堆base64编码,如下图所示(部分截图)。

  然后将得到的base64密文直接拿去解码,可以得到一份php文件的源码,如下图所示。

  接着在这里可以看到有三个类,分别是Flag,Secret,和Safe。其中,可以观察到Secret类里含有file_get_contents函数,这个函数可以读取文件里面的内容,而且函数上面还有一个注释,写着“fllllllag.php”。这也提示了我们需要通过file_get_contents函数来读取这个文件。然后又观察到Flag类中有一个magic函数:_toString函数。并且函数里面有一个read操作,可以触发下面的file_get_contents函数。因此推测,在serialise的时候,应该是先定义一个Flag类,然后再定义一个Secret类,接着定义一个Flag类的变量。最后结果应该就是,通过magic函数中的read函数,调用file_get_contents函数来读取fllllllag.php。

  这里补充一下,magic函数一般都是以下划线未开头命名的,在某些特殊情况会自动调用,而_toString函数是在对象被当作一个字符串使用时调用的。

  根据上面的分析,利用反序列化漏洞,可以写出:

  跑出“O:4:"Flag":1:{s:3:"obj";O:6:"Secret":1:{s:4:"file";s:13:"fllllllag.php";}}”,之后在backdoor.php中将这串字符赋值给secret,execute。查看源码,可以得到flag。如下图所示。

WEB新手之serialize’s revenge的更多相关文章

  1. WEB新手之签到题

    写一写web新手赛的题. 这是签到题,开始时需要耐心等待页面中字母全部出现. 字母全部出现后,会跳转到另一个界面,如上图所示.F12没什么特别的地方,这题应该有点难度. 按往常一样,先抓包. 按英文提 ...

  2. 攻防世界web新手区做题记录

    学校信安协会第一次培训结束后的作业,要求把攻防世界的web新手区题目做一遍并写题解. 第一题 view_source 查看源代码右键不能用,但是F12能用,于是找到源代码 输入到flag框即可 后来在 ...

  3. 攻防世界web新手区

    攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...

  4. 攻防世界——web新手练习区解题记录<1>(1-4题)

    web新手练习区一至四题 第一题view_source: 题目说右键不管用了,我们先获取在线场景来看一看,我们看到这样一个网页,并且右键确实点了没什么反应,而用到右键一般就是查看网页源码 用快捷键(F ...

  5. WEB新手之do u know caidao?

    继续写题. 进入该网站,可以看到显然题目给出了一个假的flag.再看第二句话,说题目里存在shell.于是用御剑扫描一下后台. 如上图所示,扫出了一个叫shell的包.于是常识性地在URL加上shel ...

  6. 攻防世界WEB新手练习

    0x01 view_source 0x02 get_post 这道题就是最基础的get和post请求的发送 flag:cyberpeace{b1e763710ff23f2acf16c2358d3132 ...

  7. 攻防世界 web 新手练习 刷题记录

    1.view_source 既然让看源码,那就F12直接就能看到. 2.robots 先百度去简单了解一下robots协议 robots协议(robots.txt),robots.txt文件在网站根目 ...

  8. 攻防世界web新手区(3)

    xff_referer:http://111.198.29.45:43071 打开网址,显示出这个页面: X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP, ...

  9. 攻防世界--web新手练习区(1)

      1. 题目描述:X老师想让小明同学查看一个网页的源代码,但小明却发现鼠标右键不管用了.  http://111.198.29.45:53629 通过阅读题目描述分析,我们需要查看源码,但是鼠标右键 ...

随机推荐

  1. Dev的双击Gridview的DoubleClick

    注意: 是GridView的Double而不是GridControlprivate void gridView1_DoubleClick(object sender, EventArgs e){    ...

  2. 将DataTable中的数据导出成Excel

    public bool ExportFile(System.Data.DataTable dt){    SaveFileDialog sfd = new SaveFileDialog();    s ...

  3. Spket,eclipse下安装Spket插件,格式化js

    点击菜单 Help => Install New SoftWare => add 如图 name框输入:Skept Location框输入:http://www.agpad.com/upd ...

  4. 02- 画文字和图片-------------之前写的那个微博项目,可以试试用画图片的方式来处理,这样应该比UILabel 代码少点,一会试试

    1.画图片 - (void)drawRect:(CGRect)rect { // Drawing code UIImage *image = [UIImage imageNamed:@"pa ...

  5. spark reduceByKey

    reduce(binary_function) reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给 ...

  6. [SoapUI] 在Test Step 下加Script Assertion,用 messageExchange 获取当前步骤的response content

    //Get response content of the current request def response = messageExchange.getResponseContent() // ...

  7. js 获取ur参数 只要问号后面的那段传进url

    //获取url中的参数 function getUrlParam (pName, win) { var sUrl; if (typeof (win) == 'string') { sUrl = win ...

  8. thinkphp+memcache缓存例子

    public function dailyRelays() { $history = I('post.history'); $da = new \Home\Model\DailyrelayModel( ...

  9. 编写高质量代码改善C#程序的157个建议——建议84:使用PLINQ

    建议84:使用PLINQ LINQ最基本的功能就是对集合进行遍历查询,并在此基础上对元素进行操作.仔细推敲会发现,并行编程简直就是专门为这一类应用准备的.因此,微软专门为LINQ拓展了一个类Paral ...

  10. model.find(options)

    options {Object} 操作选项,会通过 parseOptions 方法解析 return {Promise} 返回单条数据 查询单条数据,返回的数据类型为对象.如果未查询到相关数据,返回值 ...