护网杯 three hit 复现(is_numeric引发的二次注入)
1.题目源码
https://github.com/ZhangAiQiang/three-hit
题目并不真的是当时源码,是我根据做法自己写的,虽然代码烂,但是还好能达到复现的目的
2.is_numeric()漏洞
is_numeric()检查是否是数字字符串,同时也可以是十六进制。
比如
is_numeric(1) true
is_numeric('a') false
is_numeric('2a') false
is_numeric(0xabcedf) true
3.注册账号
root,root,0x3078656520756E696F6E2073656C656374207573657228292C322C33
age是一串十六进制,是
0xee union select user(),2,3 的十六进制形式
因为is_numeric()的关系,同样可以写进去,那么会是什么格式呢
4.分析注册的时候的源码
$sql="insert into user values('$username',md5('$password'),$age)";
可以看到$age是没有单引号保护的,那我们看一下数据库中的数据

(这里先说下,age并不是int类型,因为是int类型的话,字符串根本插不上。)
我们明明是插入的十六进制数据,为什么会变成字符串呢?
执行一下sql:
insert into user values('root2',md5('root2'),0x3078656520756E696F6E2073656C656374207573657228292C322C33)
insert into user values('root3',md5('root3'),'0x3078656520756E696F6E2073656C656374207573657228292C322C33')

两者的区别在于,age是否有单引号的保护,我们看到,当少了单引号后,插入的十六进制数据变成了字符串,和题目的源码正好对应了起来。
5. 个人中心

可以看到,已经注入出来了user。
6.分析个人中心的源码
username是存储在session里面的,然后功能是先找出你当前用户的age,然后根据当前用户的age寻找其他的具有相同age的用户。
$sql = "SELECT * FROM user where username= '".$_SESSION['username']."'"; 这一句话查询出年龄,并没有什么危害。
$sql = "SELECT * FROM user where age=".$age;
这句话是二次注入的引发点,因为age我们是可控的,我们注册的root账号里面age内容是
0xee union select user(),2,3
拼接:select * from user where age=0xee union select user(),2,3
这样注入就分析完了。
7.总结:
age得为字符串类型
插入注册信息的时候age字段没有单引号保护
我感觉就拿这个题目来说的话,平时工作谁会写出这么蠢的代码。
护网杯 three hit 复现(is_numeric引发的二次注入)的更多相关文章
- [一道蓝鲸安全打卡Web分析] 文件上传引发的二次注入
蓝鲸打卡的一个 web 文件上传引发二次注入的题解和思考 蓝鲸文件管理系统 源代码地址:http://www.whaledu.com/course/290/task/2848/show 首先在设置文件 ...
- [原题复现]2018护网杯(WEB)easy_tornado(模板注入)
简介 原题复现: 考察知识点:模板注入 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 [护网杯 2018]eas ...
- 护网杯圆满结束,还不满足?不如来看看大佬的WP扩展思路~
护网杯预选赛 WP转载自:https://qingchenldl.github.io/2018/10/13/%E6%8A%A4%E7%BD%91%E6%9D%AFWP-BitPwn/#more WEB ...
- 2019护网杯baby_forensic
题目名称:baby_forensic题目描述:can you catch the flag?附件:“data.7z” 2019护网杯初赛的一道取证题,比赛时没做出来,赛后又研究了一下. 获取profi ...
- buu[护网杯 2018]easy_tornado
[护网杯 2018]easy_tornado 1.看看题目给了我们三个文件: /flag.txt url=?filename=/flag.txt&filehash=98c6aac4fbecf1 ...
- 2018护网杯-easy_laravel 复现
题目docker环境: https://github.com/sco4x0/huwangbei2018_easy_laravel git clone下来直接composer up -d 运行即可,可以 ...
- 强网杯2018 pwn复现
前言 本文对强网杯 中除了 2 个内核题以外的 6 个 pwn 题的利用方式进行记录.题目真心不错 程序和 exp: https://gitee.com/hac425/blog_data/blob/m ...
- 护网杯2019 mergeheap --pwn
护网 又是签到 一天 这道题一开始 不懂得如何泄露 libc 信息,就蒙了 后来群里师傅也是刚刚好 做出 到这里 我就接着做了 . 先看下保护,发现 全开了 然后 就看下流程 大概 就是添加 c ...
- 2018护网杯easy_tornado(SSTI tornado render模板注入)
考点:SSTI注入 原理: tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且 ...
随机推荐
- 使用MSF生成木马_入侵Windows
1>生成木马 (123.exe) -f 输出格式 -o 输出地址 2>启动msfconsole 3>进行设置&&启动攻击 4>木马运行&后 ...
- mybatis学习记录三——SqlMapConfig.xml相关参数详解
5 SqlMapConfig.xml mybatis的全局配置文件SqlMapConfig.xml,配置内容如下: properties(属性) settings(全局配置参数) ty ...
- P1800 software_NOI导刊2010提高(06)
P1800 software_NOI导刊2010提高(06) 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术 ...
- [LuoguP1111]修复公路
[LuoguP1111]修复公路 题目描述: A地区在地震过后,链接所有村庄的公路都损坏了,而导致无法通车,政府派人修复这些公路. 给出A地区的N村庄数和M公路数,并且对于每一个公路给出其链接的两个村 ...
- EJB JPQL语句查询
JPQL就是一种查询语言,具有与SQL 相类似的特征,JPQL是完全面向对象的,具备继承.多态和关联等特性,和hibernate HQL很相似. 查询语句的参数 JPQL语句支持两种方式的参数定义 ...
- 用c#语言编写分解质因数
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- CodePush自定义更新弹框及下载进度条
CodePush 热更新之自定义更新弹框及下载进度 先来几张弹框效果图 非强制更新场景 image 强制更新场景 image 更新包下载进度效果 image 核心代码 这里的热更新Modal框,是封装 ...
- Integer大小比较问题
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { Integer ...
- 利用nginx使ftp可以通过http访问
./nginx 启动服务./nginx -s stop 关闭服务./nginx -s reload 重新加载配置文件 搭建nginx映射ftp服务:打开nginx的配置文件nginx.conf(位于n ...
- xpath技术解析xm文件(php)
1.结合php dom技术的学习,得出一个结论:php dom技术可以跨层取出节点,但是不能保持层次关系,使用xpath可以很好地解决问题. *** xpath技术的核心思想:迅速简洁的定位你需要查找 ...