
CTF入门
文章平均质量分 53
不想带绿帽子的白帽子
这个作者很懒,什么都没留下…
展开
-
BUGKU_Simple_SSTI_1
查看网页源代码,发现提示: 与flask框架的 secret_key有关。这个是模板注入的题,所以可以猜测思路是利用模板注入漏洞将secret_key变量的值回显到页面上。如果没有才有猜到,那就利用payload先执行个ls命令看看根目录下有什么。具体利用什么样的payload和为什么利用它见我的另一篇模板注入相关的笔记。发现有这些文件然后查看app文件夹里有什么发现有app.py 有可能是源代码。所以利用漏洞执行cat命令查看内容根据红线,我们也可以知道,要想获取flag,就得获取 .原创 2021-06-05 04:13:00 · 836 阅读 · 0 评论 -
浏览器查看源代码和F12审查元素的区别
查看源代码就是查看服务器发给浏览器的原封不动的代码。审查元素是,浏览器执行完源代码里的js代码后的最终结果。“审查元素”包括源代码+js动态渲染的内容,即最终展示的html内容。在做WEB CTF题的时候,遇到过一道题,就是 访问1p.html, 直接访问就会跳转到另一个页面。如果是查看源代码,就不会跳转。应该是源代码里有跳转页面的JS代码被执行了。参考自https://blog.youkuaiyun.com/u010865136/article/details/109857046...原创 2021-05-25 09:53:11 · 2276 阅读 · 0 评论 -
模板注入漏洞
SSTI(Server-Side TemplateInjection)服务端模板注入攻击,通过与服务端模板的输入输出交互,在过滤不严格的情况下,构造恶意输入数据,从而达到读取文件或者getshell的目的。此种类型漏洞虽然多次在CTF中,以Python语言为载体出现,但是这并不是Python模板引擎独有的漏洞。值得注意的是:凡是使用模板的地方都可能会出现SSTI的问题,SSTI不属于任何一种语言。jinja2原理以下内容,以Python的模板引擎Jinja2为例。from flask import原创 2021-04-07 09:53:49 · 1388 阅读 · 3 评论 -
mysql条件等号的异常情况
转自http://www.wupco.cn/?p=93原创 2021-03-25 16:58:18 · 176 阅读 · 0 评论 -
WEB36,38:全都过滤了,你绝望吗(sql盲注)
先验知识sql运算符优先级中比较运算符低于加减运算符的,mysql,中 where 语句中的运算符,例如加减,= 都是弱类型运算,跟php一样会进行强制类型转换。字符串进行加减运算时,有以下几种情况:‘abc’+0 = 0‘a’ + 0 = 0‘123’ + 0 = 123‘-123a’+0 = -123‘-+123a’ + 0 = 0‘a123a’ + 0 =0’ ’ =0 空字符串也是转0‘abc’ + ‘aaa’ = 0‘abc’ + ‘123’ =原创 2021-03-25 16:32:38 · 371 阅读 · 0 评论 -
WEB35(序列化和反序列化)
之前学java时就了解过java序列化,即把java对象转变为字节流。序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。总之,序列化作用就是方便传输和存储,将不同环境下的数据转换为一种公共的大家都认识的数据格式。先不深究序列化了,应该会涉及到操作系统,编译原理等知识。先浅浅的,形象化的认识一下php中的序列化和反序列化吧。先说结论:php序列化使得php中的所有数据类型都可以转换为一种特定的字符串,不必直接传输该数据,而是传递序列原创 2021-03-22 11:28:09 · 241 阅读 · 0 评论 -
web25:SQL漏洞之约束
本题已经给了提示,基于约束的SQL漏洞攻击。关于SQL漏洞攻击,这个哥们https://www.cnblogs.com/ECJTUACM-873284962/p/8977983.html写的很好。首先要理解 数据库中 约束的概念。其次,了解sql执行字符串处理时,多数情况下字符串末尾的空格符将会被删除假设:1.. 数据库中有一条某个字段为字符串A的记录2. 我们在php后端与数据库交互的代码中,查询是否存在字符串A。如果存在,则结束。否则,继续执行。3. 假设字符串A所在字段没有唯一性约束,但原创 2021-03-10 19:27:14 · 111 阅读 · 0 评论 -
web21:作者:御结冰城
打开后查看源码,发现提示 1p.html所以 看看是否存在1p.html这个文件url输入ip:port/1p.html发现跳转到了www.bugku.com这个网页这个变化说明:1p.html这个文件确实是存在的,而且这个文件执行了一个链接跳转到www.bugku.com的动作。所以,先看看1p.html这个网页的源代码一个是用burpsuite向 ip/port/1p.html发送请求,看返回的body另一个是直接在浏览器上先查看源代码,在源代码页进入1p.html可以看到给了一.原创 2021-03-04 23:27:42 · 370 阅读 · 1 评论 -
Web20:Cookies欺骗
在这里插入图片描述打开一看,有一串字符,但是没什么意义,是用来迷惑大伙的。在看url,发现有两个参数line 和filename,filename后一串Base64字符,解码后发现时是keys.txt尝试/keys.txt,无果。联想之前文件上传漏洞里,利用file参数可以获取后端代码。而这里有line和filename,有可能是某个文件的某行代码。尝试将keys.txt和index.php分别用base64编码后 ,作为参数。以及设 line=2.尝试发现可以获得,index.php中的代码原创 2021-02-17 16:50:54 · 169 阅读 · 0 评论 -
WEB17:SQL注入问题
思路:依据常见的判断注入的方法,判断是数字型注入还是字符型注入。利用 1’ and 1=1# 结果回显,1’ and 1=2# 结果不回显; 得出结论:字符型注入。然后下边就是字符注入的常见思路了:通过利用单引号闭合后,引入自己的代码,实现:判断有表中有几个字段 order byeg: order by 3 根据第三列字段排序输入 1’ order by 1~4 # 可以显示数据,而1’ order by 5#不行,说明有四列字段试探有哪些字段会被在前端使用放到界面显示(判断回.原创 2021-02-09 19:00:20 · 154 阅读 · 0 评论 -
web16:备份是个好习惯(MD5函数绕过)
刚接触很懵逼原创 2021-02-09 15:27:14 · 155 阅读 · 0 评论 -
web9:flag在变量中,考察PHP变量基础知识?PHP有哪些系统变量可以容纳其他变量?——php超级全局变量
题目提示,flag在变量中。又读代码可知,代码主要做了一个字符串正则匹配, /^\w+$/的意思是字符串成的开头和结尾都必须是若干的数字或者字母,或者下划线。所以 如果传的参数中含有任何非字母,数字,下划线的字符,就会执行die()函数。也就是说断绝我们利用参数漏洞执行函数的可能,如web8那样。现在知道,flag在变量里。那么在哪个变量呢?这时,你就需要知道PHP有哪些系统变量可以包含flag相关的变量了;$_POST [用于接收post提交的数据]$_GET [用于获取url地址栏的参数数.原创 2021-02-02 21:27:04 · 608 阅读 · 0 评论 -
web8:文件包含(了解eval函数以及php文件操作)
文件包含,根据题目以及代码的意思可知,这个题目与php文件有关系。flag应该就在flag.php文件中,又可知,eval函数是执行字符串的,var_dump是显示变量内容和结构的。有两种解法:闭合var_dump:http://114.67.246.176:19411/?hello=1);print_r(file(%22flag.php%22),利用漏洞,修改了eval的参数的内容。变为了eval(“var_dump(1);print_r(file(‘flag.php’));”)eval将.原创 2021-02-02 20:34:56 · 800 阅读 · 0 评论 -
web12:本地管理员(http请求,伪造IP,XFF字段)
这道题,提示是IP禁止访问。看了答案以后,说是伪造本地IP。不允许外来IP访问,那么应该就是本地IP可以访问了,本地IP又称回送地址,用于本地软件测试,进程间通信。伪造本地IP的方法是在http头上加一个字段X-Forwarded-For:127.0.0.1另外在网页源码里有一串Base64字符,解码后是test123管理员系统的账号常为admin,所以猜test123是其密码。所以伪造http头,加一个字段伪造来源为本地IP即可破解题目。...原创 2021-02-02 14:17:41 · 3300 阅读 · 0 评论 -
web11:网站被黑了 黑客会不会留下后门
这个主要就是御剑先扫到后门,然后发现要密码。。若干参数请求无果后,只能试试密码爆破了,结果burpsuite的自带字典就可,(害,俺的burpsuite社区版怎么没有自带字典。。。那个simpe list的playload count是0.。。好难受。。)。反正还是印证了之前总结的个普通思路:有事没事先扫扫后门,看看情况再说。...原创 2021-01-29 22:34:47 · 382 阅读 · 0 评论 -
WEB7:你必须让它停下
这道题,一直在刷新。然后看到response的图片一直在变。flag隐藏在某个图片的response里。这道题图片,可以用burpsuite的repeater一下一下试,最终找到答案。拓展和新思路:如果图片非常多呢?手动基本不可能的情况下,那就考试用python写个脚本,不断发送请求,查找每次返回内容,知道查到flag关键字。...原创 2020-12-18 19:27:24 · 130 阅读 · 1 评论 -
Web6:无限alert
点进去环境,一直弹alert,看F12里边html都没有。思路1:想办法让浏览器禁止弹alert:。没有结果。思路2:用工具向服务器发个请求看看,看到返回的结果里一堆alert,最后一行有个莫名的串,音乐隐约感觉到是某种编码。百度了下 &#+数字 是什么,结果Unicode相关。所以Unicode转中文即可解码一下即可。关键:对于常见的编码的各种形式要了解。"UNICODE编码。这种编码的字符实体,使用&#x打头,后接 entity_number."...原创 2020-12-18 19:07:24 · 223 阅读 · 0 评论 -
WEB5:矛盾
这个主要考察php语言的特性:数字 和字符串间的类型比较原创 2020-12-18 18:40:56 · 127 阅读 · 1 评论 -
CTF初体验:Web18秋名山车神
解题过程进入环境这个挺明确的,先不扫后台了让两秒内算出结果,刷新下发现内容是变化的。所以大概就是要用脚本,在两秒内,先发起请求得到页面,截取算式,利用eval计算字符串表达式的值。算出结果后,还不知道怎么把结果给他。先试下没参数post,结果返回了这么一段话所以大概参数是valueimport requestsimport base64s = requests.session()url = "http://114.67.246.176:15653/"res = s.post(原创 2020-12-14 21:08:23 · 723 阅读 · 0 评论 -
各种编码初略认识
Base64Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。编码后的结果:比如这种:“6LeR55qE6L+Y5LiN6ZSZ77yM57uZ5L2gZmxhZ+WQpzogTkRNMk5qWXg=”具体Base64作用以及其他细节,有时间补充。...原创 2020-12-14 20:11:59 · 18181 阅读 · 0 评论 -
CTF初体验:web19,速度要快。
解题过程进来什么都没有,只有一句话和一段英文## 不管怎么样,(1)先扫下后台,(2)先看看刚进来时的request和response(1)扫描到一个 index.php ,进去发现跟之前的没什么不同。(2)发现刚进来 response里就有flag,然后刷新一下看看他是固定的还是变化的,发现flag是变化的flag是变化的,把每次都flag都去试下,发现都不对。又因为这是个base64编码的串,所以随便找一次的flag,先解码看下。然后再去试下答案,发现还是不对。而且每次进入刷新原创 2020-12-14 20:03:30 · 869 阅读 · 0 评论 -
git部署余弦的ctf-wiki遇到的问题以及一些理解
第二步 pip install -r requirements.txt直接在cmd里运行 报错于是去查了 requirements.txt是个什么东西:python每个项目都有一个requirements.txt,用来记录项目依赖的一些包和工具等。迁移项目的时候,我们不会将依赖一同迁移的,只需要携带这个文本文件,pip这个工具就可以根据此文本文件帮你在一个新环境里下载依赖。所以可知, 找不到该文件,是因为没有把目录跳到git下来的那个项目里。解决:该依赖记录文件如下:...原创 2020-12-07 00:02:02 · 750 阅读 · 0 评论