打开题目看到提示 "do you know Vulcan Logic Dumper?" ,再查看源码看到"<!-- index.php.txt ?>",访问后发现一堆看不懂的东西

这肯定就是所谓的Vulcan Logic Dumper了,先了解下相关概念

PHP内核-Zend引擎:http://www.php.cn/php-weizijiaocheng-355597.html

PHP中的opcode:https://blog.csdn.net/weiyuanke/article/details/76921476

Vulcan Logic Dumper:http://www.phppan.com/2011/05/vld-extension/

也就是说我们刚才看到的一堆代码其实就是借助vld得到的,php语言中供zend引擎执行的中间代码opcode。有了opcode便可以将其翻译成php代码。  网上也没找到翻译opcode的工具,只好借着对照表自己人工翻译了...

(opcode对照表:http://www.php.net/manual/en/internals2.opcodes.list.php)

这段代码比较简单,其实掌握下规律还是挺好分析的,这是我初步分析的结果

<?php
echo'do+you+know+Vulcan+Logic+Dumper%3F%3Cbr%3E'; $0=$_GET['flag1']; $1=$_GET['flag2'] $2=$_GET['flag3']; 21 如果$0不等于'fvhjjihfcv'
22 跳转到38行 24 如果$1不等于'gfuyiyhioyf'
25 跳转到35行 27 如果$2不等于'yugoiiyhi'
28 跳转到32行 30 echo'the+next+step+is+xxx.zip'; 31 跳转到34行 32 EXT_STMT 33 echo'false%3Cbr%3E'; 34 跳转到37行 35 EXT_STMT 36 echo'false%3Cbr%3E'; 37 跳转到40行 38 EXT_STMT 39 echo'false%3Cbr%3E'; 40 NOP
41 EXT_STMT 42 echo%3C%21--+index.php.txt+%3F%3E%0D%0A%0D%0A';
?>

进一步转换为php代码则为

 <?php

     echo 'do you know Vulcan Logic Dumper?<br>';
$a=$_GET['flag1'];
$b=$_GET['flag2'];
$c=$_GET['flag3']; if($a!='fvhjjihfcv')
{
echo 'false<br>';
}
elseif($b!='gfuyiyhioyf')
{
echo 'false<br>';
}
elseif($c!='yugoiiyhi')
{
echo 'false<br>';
}
else
{
echo 'the next step is xxx.zip';
} echo '<!-- index.php.txt ?>';
?>

代码很简单,不用多解释

构造/?flag1=fvhjjihfcv&flag2=gfuyiyhioyf&flag3=yugoiiyhi

接着访问/1chunqiu.zip,下载完文件后解压,开始代码审计。

password经过md5加密,number只能是纯数字,所以都不存在注入点。但是username虽然经过addslashes()处理(单引号,反斜杠等前面都会被加上反斜杠而转义,防御sql注入),但是又再次被这句代码处理 "  $username = trim(str_replace($number, '', $username));  ",所以我们可以利用这里让单引号逃逸出来,这句代码来的很突兀,而且没什么意义,很明显故意的漏洞。

构造number=0&username=%00' &password=3

看到数据库报错,说明单引号逃逸成功,当username提交 %00' ,经过addslashes()处理后(addslashes()会在NULL前加 \ ,0等于NULL)是  \0\'。而number也是0,所以将从username中去掉0,username则变成  \\'  ,单引号前的\被\转义,所以单引号逃逸成功,后台sql语句为 select * from`users`where username=' \\ ' '   ,可见多出一个单引号,当然报错。

由于没有数据回显点,所以考虑进行报错注入,number=0&username=%00' and updatexml(1,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,41),1) #&password=x&submit=

测试多次,无论表名列名都有4个字符不显示,本来以为服务器会过滤掉这段4个字符的字符串,但是尝试部分截取也还是不显示。。。 猜到是flag,所以就直接查询了

注意语句中不要再出现0了,,被坑了好久,最后才发现。。

i春秋——“百度杯”CTF比赛 十月场——Vld(Vulcan Logic Dumper 、php opcode、sql 报错注入)的更多相关文章

  1. i春秋“百度杯”CTF比赛 十月场-Vld(单引号逃逸+报错注入)

    题目源代码给出了提示index.php.txt,打开拿到了一段看不太懂得东西. 图片标注的有flag1,flag2,flag3,同时还有三段字符,然后还出现了_GET,脑洞一一点想到访问 ?flag1 ...

  2. [i春秋]“百度杯”CTF比赛 十月场-Hash

    前言 涉及知识点:反序列化.代码执行.命令执行 题目来自:i春秋 hash  如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用 或者利用本文章提供的源码自主复现 [i春秋]"百 ...

  3. i春秋 百度杯”CTF比赛 十月场 login

    出现敏感的信息,然后进行登录 登录成功发现奇怪的show 然后把show放到发包里面试一下 出现了源码,审计代码开始 出flag的条件要user 等于春秋 然后进行login来源于反序列化后的logi ...

  4. i春秋-“百度杯”CTF比赛 十月场-Login

    源码发下提示 尝试登陆 得到个什么鬼, 但是相应包里发现个可疑的东西   //  CTF中的0 和1 这些一般都有套路的 然后在请求头里 改为 1 ##代码审计来了..   分析了半天 后来看了别人的 ...

  5. i春秋 “百度杯”CTF比赛 十月场 web题 Backdoor

    0x00: 打开题目,题目中告诉我们这题是文件泄露. 0x01: 通过扫描目录,发现可以扫到的有3个文件 index.php flag.php robots.txt 但是浏览flag.php它告诉我们 ...

  6. i春秋——“百度杯”CTF比赛 十月场——EXEC(命令执行、带外通道传输数据)

    查看源码得知由vim编写,所以查找备份以及交换文件 找到 /.index.php.swp ,下载后用vim -r恢复该文件即可得到源码 1 <html> 2 <head> 3 ...

  7. i春秋——“百度杯”CTF比赛 十月场——Not Found(http请求方法,client-ip伪造ip)

    这道题也是让我很迷... 打开就是not found,让我一度以为是服务器挂了,细看发现有个404.php 访问也没发现什么东西,只有来自出题人的嘲讽 haha~ 不过在首页的header中发现个奇怪 ...

  8. i春秋——“百度杯”CTF比赛 十月场——GetFlag(md5碰撞、文件包含、网站绝对路径)

    需要提交的captcha满足等式,肯定就是MD5碰撞了 附上脚本 import hashlib def func(md5_val): for x in range(1,100000000): md5_ ...

  9. i春秋——“百度杯”CTF比赛 十月场——Login

    根据页面源码提示的 test1 test1 登录 刷新此页面并抓包,有个show=0值得关注 在发送的包的header中加一句show:1,即可得到member.php的源码 <?php inc ...

随机推荐

  1. 防止ARP欺骗

    前言: 曾经因为宿舍里面的同学经常熬夜打游戏,好言相劝不管用,无奈之下使用arp欺骗他们的主机,使之晚上11点之后游戏延迟,掉线,最后,一到11点同学们就都上床睡觉了. 防止arp欺骗的三种思路: 在 ...

  2. 201871010136-赵艳强《面向对象程序设计(Java)》第八周学习总结

    201871010136-赵艳强<面向对象程序设计(Java)>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...

  3. yield_from

    python3.3 新加的yield from 语句 1.yield from def my_chain(*args, **kwargs): for my_iterable in args: yiel ...

  4. Kubernetes prometheus+grafana k8s 监控

    参考: https://www.cnblogs.com/terrycy/p/10058944.html https://www.cnblogs.com/weiBlog/p/10629966.html ...

  5. zz开源 MNN:淘宝在移动 AI 上的实践

    开源 MNN:淘宝在移动 AI 上的实践   陈以鎏(离青) 阅读数:40612019 年 6 月 28 日   随着深度学习的快速发展和端侧设备算力的不断提升,原本在云端执行的推理预测工作正在部分迁 ...

  6. Maven的Scope区别笔记

    依赖的Scopescope定义了类包在项目的使用阶段.项目阶段包括: 编译,运行,测试和发布. 分类说明compile 默认scope为compile,表示为当前依赖参与项目的编译.测试和运行阶段,属 ...

  7. Cannot resolve reference to bean 'mongoTemplate' while setting bean property 'mongoOperations'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with na

    问题: Springboot 启动时出错,报没法创建bean的错误,看到nested最后是关于mongoTemplate的错误. 过程: 看网上大多说的是修改mongoTemplate的配置,但是sp ...

  8. [RN] React-Native中Array渲染的优化

    React-Native中Array渲染的优化 例如用Push加进去的数据: constructor(props){    super(props);    this.state = {      b ...

  9. 你真的了解strtotime('X month')吗

    经常会有人被strtotime结合-1 month, +1 month, next month的时候搞得很困惑, 然后就会觉得这个函数有点不那么靠谱, 动不动就出问题. 用的时候就会很慌… 今天是20 ...

  10. 通过Windows实现端口转发

    转自:月光博客<通过Windows实现端口转发> 这里介绍一个使用两台云服务器访问外网的方法,一台国内服务器,一台国外服务器,国内服务器通过端口转发来用于中转,中转的好处是,服务器对服务器 ...