11.[极客大挑战 2019]easysql
考察知识点:
1.万能密码
\1. 随便输入提示密码错误
2.输入单引号报错,尝试报错注入,一直不对
3.后在password处尝试1’or’1=’1登陆得到flag
10.[网鼎杯 2018]Fakebook
考察知识点:
1.sql报错注入
2.ssrf搭配序列化
3.robots.txt
4.file:///协议
1.访问robots.txt
提示存在/user.php.bak
2.user.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344<?phpclass UserInfo{ public $name = ""; public $age = 0; public $blog = ""; public function __construct($name, $age, $blog) { $this->name = $name; $this->age = (int)$age; $this->blog = $blog; } function get($url) { $c ...
9.[De1CTF 2019]SSRF Me
题目考察知识点:
1.pythpn代码审计
2.local_file:///协议绕过
3.md5长度扩展攻击
1.local_file:/// 协议绕过file,urllibe的一个cve:cve2019-9948
2.重点说一下md5长度扩展攻击
这里使用hashdump工具:
此处:input singnature:来自于 /geneSign
获取的md5值
input data:为盐值
input key length : 为盐值长度
input data to add:貌似可以为任意值
最后需要将:
生成的payload的\x替换为%
8.[CISCN2019 华北赛区 Day2 Web1]Hack World
1.测试过滤字符
1.1 and,or,union被过滤此时只能考虑盲注
1.2 空格,/**/,被过滤可以考虑()括号绕过
\2. 测试当ascii码值大于101时,返回数据不一样
此时可以写出盲注脚本:
1234567891011121314151617181920212223import requestsurl = 'http://fc1b4a8a-ce34-4958-80f7-16870eab28bb.node3.buuoj.cn/index.php'result = ''for x in range(1, 50): high = 127 low = 32 mid = (low + high) // 2 while high > low: payload = "if(ascii(substr((select(flag)from(flag)),%d,1))>%d,1,2)" % (x, mid) data = { &quo ...
7.[RoarCTF 2019]Easy Calc
方法一:http走私
本题提示有waf,尝试使用http走私绕过
1.cl-cl
这里猜测是,cl=0是waf不对请求头进行处理,而后端对请求头进行了处理,造成http走私
2.cl-te
这里猜测是,waf对第一个参数请求进行了响应并报错,但是并没有终止请求把信息发送到了后端,后端处理了请求,返回了目录信息
方法二:字符串解析漏洞
该题打开是一个计算器:
1.提示存在一个waf并且,将提交的参数传给calc.php处理
2.访问calc.php得到calc.php的源代码
3.查看源代码需要传入num参数,再由eval函数执行,但是直接传入phpinfo();报错。多次尝试只能传入数字。所以猜测传递的参数被一个waf拦截,而且该waf只能传递数字。现在所需的就是要是绕过waf。
4.当把参数名num改为nums时:绕过了waf直接访问到了calc.php界面,说明waf只能拦截,num传递来的参数。
5.确定waf只能拦截num参数,此时我们构造的payload只要满足:
5.1. 参数名不为num
5.2. 传递到calc.php时,程序会把该参数识别成num
6.此时 ...
6.[HCTF 2018]admin.
方法一:session伪造1.信息收集1.1 登陆之后 提示:you are not admin,猜测要登陆admin用户才可以获取到flag
1.2 在密码修改界面,看到一个github连接,访问得到网站源码
2. 功能分析2.1 发现是一个flask框架的网站2.2 简单分析路由1234567891011121314151617@app.route('/index')def index():@app.route('/register', methods = ['GET', 'POST'])def register():@app.route('/login', methods = ['GET', 'POST'])def login():@app.route('/logout')def logout():@app.route('/change', methods = ['GET', ...
5.[SUCTF 2019]EasySQL
该题暴露了源码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869<?php session_start(); include_once "config.php"; $post = array(); $get = array(); global $MysqlLink; //GetPara(); $MysqlLink = mysqli_connect("localhost",$datauser,$datapass); if(!$MysqlLink){ die("Mysql Connect Error!"); } $selectDB = mysqli_select_db($MysqlLink,$dataName); if ...
3.easy_tornado
1.打开网页发现三个文件:
2. 依次打开:2.1 flag.txt
2.2 welcome.txt
2.3 hints.txt
根据hints.txt可以发现每个文件打开都需要md5(cookie_secret+md5(filename))
而此时cookie_secrect不知道,http请求包中也没有。所以现在的首要思路就是找到cookie_secrect
2.4查看大佬们的wpwelcome提示了render,render是python的一个模板,所以考虑是否存在模板注入。
关于模板注入的文章。
https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A6%E4%BD%A0%E7%90%86%E8%A7%A3%E6%BC%8F%E6%B4%9E%E4%B9%8BSSTI%E6%BC%8F%E6%B4%9E/
2.5 判断是否存在注入error?msg=
1^0为0说明执行了表达式。存在注入
2.6 cookie_secret存在于handler.settings中,直接paylo ...
2.[强网杯 2019]随便注
sql注入拿到题目都先尝试各种操作,观察有什么字段被过滤,快速的判断可以使用什么注入方式。
常见的尝试字段有:
1234561'1'or'1'='11'||'1'='11'order by 2--+ //采用二分查找法1'union select null--+1'sleep(3)--+
1.1 1
1.2 1’
1.3 1’union select null–+
1.4 1’;show databases;#
1.5 1’;show tables;#
1.6 查看表名为数字的的表含有什么字段1’;show columns from 1919810931114514;#
222’;show columns from words;#
1.7确定words表为默认查询表,1919810931114514表中含有flag字段。过滤中没有过滤rename和alert.此时可以采取思路:
先更改words表为words1,再更改1919810931114514表,表名为wo ...
1.[HCTF 2018]WarmUp
1.f12查看看到一个source.php
2.访问souce.php1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071<?phphighlight_file(__FILE__);class emmm{ public static function checkFile(&$page) {// 白名单 $whitelist = ["source"=>"source.php","hint"=>"hint.php"];// 不存在$page或$page不是字符串// return flase if (! isset($page) || !is_string($page)) & ...