ctf

CTF中sql注入的一些知识

扶醉桌前 提交于 2019-12-07 00:47:07
最近一直在学习sql注入的知识,感觉sql注入确实是漏洞中的一大难点。首先是自己对数据库结构的不熟悉,所以构造的一些语句总是不能理解。其次是没有对自己学习的知识做好总结,看了很多视频、博客、题目,每次我都感觉自己好像知道要怎么去做了,可是再拿到一道题目,我还是只会加单引号,甚至在单引号没有报错的时候就不知所措。最后是没有好的状态,急功近利,想要一蹴而就,但这sql注入又哪是几天就能弄明白的,所以我还是想明白了,要多花时间去钻研,要多做思考,不能眼高手低,真正的把原理和方法弄懂。 所以我先对最近遇到的一些问题进行总结,等慢慢学习更多以后,再对此进行补充。 1、为什么有时候要用单引号闭合前面的引号,而有的时候却不用闭合呢? 2、为什么union前面搜索的值不存在,却还是可以把union联合查找的值给输出来呢? 3、为什么在url中不能用#号,而要用%23来表示呢? 4、在猜解列名时为什么要在表名前后加引号,而猜解字段内容时却不用加呢? 5、information_schema是啥?为啥猜解的时候要一直用这个东西? 6、为什么有时候引号输进去也不会报错?这个时候要怎么做? 1、关于引号的问题,其实这是因为sql语句的两种写法 这两种写法都是正确的,只是安全性不同罢了,所以在你看不到源代码的时候,也不能确定是否要加单引号去闭合,只能先加一个单引号来闭合尝试。 这两张图片是来自于: http

从一道CTF题目看sql注入中元数据的应用

☆樱花仙子☆ 提交于 2019-12-07 00:44:21
前言 第一次看到元数据在sql注入的应用好像是在《web安全深度剖析》,鉴于经验缺乏,只是知道有这么个东西,不知道怎么应用。今天遇到一道和元数据相关的SQL注入题目,所以记录下来。 获取元数据 //获取所有的库名称: select SCHEMA_NAME from information_schema.SCHEMATA //获取某一库中所有表的名称: select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA= '此处为库名' //获取某一表的所有字段名 select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME= '此处为表名' 题目分析 题目地址: http://120.24.86.145:8002/chengjidan/ 第一步测试 出于习惯,在输入框提交以下信息: ’(单引号) —无反应 1-3 三个数字 —显示三个人的成绩 1' and sleep(3) -- s —延时返回,结果与只输入1相同(这里引号应该闭合成功了,and sleep(3) 可替换为其他合法语句) ' or 1=1 -- s —与只输入1相同(这里猜测其实查询出了多条记录,但是页面只显示第一条) ' or 1=1 order by id DESC --

南邮CTF - Writeup

╄→尐↘猪︶ㄣ 提交于 2019-12-06 22:52:30
南邮CTF攻防平台Writeup By:Mirror王宇阳 个人QQ欢迎交流:2821319009 技术水平有限~大佬勿喷 ^_^ Web题 签到题: 直接一梭哈…… md5 collision: 题目源码提示: $md51 = md5('QNKCDZO'); $a = @$_GET['a']; $md52 = @md5($a); if(isset($a)){ if ($a != 'QNKCDZO' && $md51 == $md52) { echo "nctf{*****************}"; } else { echo "false!!!"; }} else{echo "please input a";} 呃……脑中闪过“ PHP弱类型 ”于是乎……当然是Google找一下喽! QNKCDZO的md5(32)加密后: 0e830400451993494058024219903391 结合 $md51 == $md52 就要0e开头的md5碰撞!感谢 Google ! 构造: http://chinalover.sinaapp.com/web19/?a=s878926199a 签到2: 本能的直接源码搜哈…… 发现了字符输入限制10位字符,而给出的指令是11位!得嘞……前端能看见的都能改 maxlength="11" 只要限制字符数超过11或等于11位就行!

ctf之python脚本获取flag

巧了我就是萌 提交于 2019-12-06 17:04:53
题目:GetFlag 解题链接:http://106.75.26.211:2222 访问链接页面显示如下: 在页面提示中captcha通过md5加密后的前六位是b8cda8,说明需要通过脚本来破解: 脚本如下: 运行结果: 这里由于不知道登录用户和密码,想到用用SQL注入的万能密码尝试一下:admin' or '1'='1 登录后页面显示如下: 访问三个文件都需要下载: 在a.php里面提示: 提示访问根目录: 查看源代码:找到了正确的url: 访问:http://106.75.26.211:2222/file/download.php?f=/var/www/html/flag.php下载flag.php 通过查看源码发现应该通过post传递flag=flag 再查看源码:得到flag 题目:天下武功唯快不破 解题链接:http://106.75.26.211:3333 访问链接页面显示: 写一个python脚本: 直接运行脚本就可得到flag。 题目:fuzzing 解题链接:http://106.75.108.111:2222 访问页面显示:页面提示这什么都没有 查看源码:也只有一个什么也没有 这种情况下可以先用抓包工具抓包,看有没有信息:抓包重放包之后发现了一个hint:大内网ip 想到应该是需要伪造一个大内网ip:比如10.0.0.1这样的 伪造ip后抓包:再重放包

CTF——实验吧(web总结1.1)

懵懂的女人 提交于 2019-12-06 17:04:06
地址: http://www.shiyanbar.com/ctf/practice 一、你能跨过去吗 题目:?,你是在问我吗???你是在怀疑我的能力吗??? 解题链接: http://ctf1.shiyanbar.com/basic/xss/ 思路: 1、发现所给字串中有%+数字,怀疑使用escape加密了url,使用站长工具 http://tool.chinaz.com/Tools/Escape.aspx 进行解(unescape),得到字符串如下: http://www.test.com/NodeMore.jsp?id=672613&page=2&pageCounter=32&undefined&callback=+/v+ +ADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAGsAZQB5ADoALwAlAG4AcwBmAG8AYwB1AHMAWABTAFMAdABlAHMAdAAlAC8AIgApADwALwBzAGMAcgBpAHAAdAA+AC0-&_=1302746925413 2、其中我们观察到: +/v+

CTF中常用的Python脚本

▼魔方 西西 提交于 2019-12-06 16:58:37
分享一下我学习CTF一个月的Python脚本 栅栏密码: #!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @Time : 2018/12/23 09:55:19 @Author : HeliantHuS @Version : 1.0 @Contact : 1984441370@qq.com ''' string = input ( "输入:" ) frequency = [ ] # 获得栅栏的栏数 result_len = len ( string ) # 栅栏密码的总长度 25 for i in range ( 2 , result_len ) : # 最小栅栏长度为2 逐个测试2,3,4.... if ( result_len % i == 0 ) : # 当栅栏密码的总长度 模 i 余数为0 则这个i就是栅栏密码的长度 frequency . append ( i ) for numberOfColumn in frequency : # 循环可能分的栏数 RESULT = [ ] # 保存各栏数的结果 for i in range ( numberOfColumn ) : # i : 开始取值的位置 for j in range ( i , result_len , numberOfColumn ) : # 开始取值,

requests库和应用 (从ctf-- 速度 要快说起)

风流意气都作罢 提交于 2019-12-06 16:56:18
我发现了,原来脚本还真的就是爬虫。那么我们来学习一下吧。。。 https://www.cnblogs.com/Albert-Lee/p/6230337.html 没什么好的教程。。 首先,认识request库。(网络请求库) 导入了requests之后 r=requests.get('...) 网址 print (r.text) 还可以继续传参数。 post就是提交表单数据,填写一堆输入框提交的。啊。 还有什么head头部这个那个,都可以搞到。(具体再看 那么,post你拿到的flag,然后客户端拿到之后就给你返回一个key。 ======区分一下: encode 你就想成enable 进行了编码,比如‘hello I‘m xxx’搞成了一堆瞎几把玩意儿 然后decode就是destory 把原来的密文给DIDIDIDI破解了 import base64就是有base64的b64decode来解码~~ 【关键:】附上小姐姐的代码(可能在本文最后) r.request.session() request是获取信息--通过用户提交的表单,查询字符串,cookie等获得信息 session是服务端用来保存一些数据(通常是标记状态的,当然也可以保存别的) session是服务端的记录变量,可以跟踪记录访问者动作,比如登录,退出等。 r.request.headers

CTF学习报告5

天大地大妈咪最大 提交于 2019-12-06 07:14:44
sql注入: * SQL注入是一种将SQL代码添加到输入参数中,传递到服务器解析并执行的一种攻击手法。 * SQL注入攻击是输入参数未经过滤,然后直接拼接到SQL语句当中解析,执行达到预想之外的一种行为,称之为SQL注入攻击。 SQL注入攻击: (1)数字注入: 在浏览器地址栏输入:learn.me/sql/article.php?id=1,这个请求相当于调用一个查询语句: $sql = "SELECT * FROM article WHERE id =",$id 正常 情况返回id=1的文章信息,如果在浏览器输入:learn.me/sql/article.php?id=-1 OR 1 =1 这个则是一个sql注入攻击,可能会返回文章的相关信息。 (2)字符串注入: 通常会有一个用户登录的平台,需要输入正确的账号和密码才能登陆进去 因为用户名和密码都是字符串,所以SQL注入的方法则是吧参数携带的数据变成mysql中注释的字符串 '#'和'--':如果输入user=user'#,密码随便输入111,这就就相当于username='user'#'and password='111'但是#之后被看成注释被忽略 '--'后面同理也被看成注释的部分,所以这样就相当于属于一个错误的密码或者不输入密码直接可以登录后台。 我们通常使用的'or1=1#'相当于一个where条件,因为1=1永远成立

CTF学习报告4

核能气质少年 提交于 2019-12-05 12:34:56
CTF编辑器漏洞分析 访问ip地址 接下来查询fckeditor的版本 一般是/fckeditor/_whatsnew.html 所以访问http://219.153.49.228:49105/fckeditor/_whatsnew.html 可以看到fckeditor的版本是2.6.4 然后我们需要知道这个fckeditor的上传地址 一般上传地址有这几种 (1)fckeditor/editor/filemanager/browser/default/connectors/test.html (2)fckeditor/editor/filemanager/upload/test.html (3)fckeditor/editor/filemanager/connectors/test.html (4)fckeditor/editor/filemanager/connectors/uploadtest.html 可以都试一下,然后发现正确的上传地址是(3) 访问界面 然后上传一个后缀为.asp的一句话木马。 常用一句话木马 asp一句话木马:    <%execute(request("value"))%>   php一句话木马:    <?php @eval($_POST[value]);?>   aspx一句话木马:   <%@ Page Language="Jscript"%>

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

蓝咒 提交于 2019-12-05 12:03:44
源码发下提示 尝试登陆 得到个什么鬼, 但是相应包里发现个可疑的东西 // CTF中的0 和1 这些一般都有套路的 然后在请求头里 改为 1 ##代码审计来了。。 分析了半天 后来看了别人的wp 才发先自己想的太复杂 只要提交user=ichunqiu就行了啊我去 cookie 去提交 token= 但是为什么这里一定是cookie里带token才行呢? array_merge()覆盖 接着看题,根据源码,只要提交符合条件的token就可拿到flag,但我们并没有在post,get,cookie中提交token,然而服务器却返回"(╯‵□′)╯︵┴─┴",说明token是在SESSION中,那我们只要在cookie里覆盖token 因为cookie在session之后 所以get 和post都不行 也算是get到一个点吧 这里我给她取名交 array_merge()变量覆盖哈哈哈 来源: https://www.cnblogs.com/tlbjiayou/p/11923861.html