sqli-labs_11-20
Less-11进入后是个登录页面,应该是基于post的注入,这边准备用hackbar注入,方便一点。看一下源码,两个框的名字分别是uname和passwd
先提交1试试效果
登陆失败,再加一个单引号试试,密码框不输(若是输入密码,报错出来的信息更少;也可同时输入单双引号,这个效果一样)
有报错回显,存在注入,且回显的错误为:’1’’ and password=’’ LIMIT 0,1。其中1’是我输进去的,另外还有成对的单引号出现,可以看出是字符型。由此猜测sql语句为:select username, password from 某表 where username='用户输入' and password='用户输入' limit 0,1根据之前的经验我们把后面注释掉,构造1' or 1 #,其中#是注释符,or 1是为了让那个查询语句为真。
可以看到登录成功。因为报错有回显,我们可以利用联合查询的注入方式,类似Less-1到Less-4,这里不多赘述,给个效果图。
这里主要利用基于extractvalue()和updatexml()的报错注入 ...
sqli-labs_1-10
Less-1进入Less-1关卡,提示输入id为一个数值
尝试提交id=1,回显login name 和password
尝试提交id=1’,回显报错,说明存在注入点,根据回显内容’1’’ LIMIT 0,1(外面一层单引号表示引用,把它去掉),可判断提交的数据类型为字符型,由此可猜测sql语句:select * from 某表 where id='某个值' limit 0,1
接下来利用order by判断表中有几列,提交?id=1' order by 3 --+回显正常,提交?id=1' order by 4 --+回显报错,可判断表中有3列然后利用联合查询看看显示位,提交id=-1' union select 1,2,3 --+,(—+表示注释,目的是把字符数据的后一个单引号及后面的语句注释掉,以免影响)有以下回显,其中id=-1是为了让前一个子句查不出来,才能让后一个子句的查询结果显示
可判断显示位为第二,第三列,然后提交id=-1' union select 1,database(),3 --+,利用database()函数返回 ...
sql_server
库创建数据库create database 数据库名字on primary(name='f5',filename='D:\1\f5.mdf',size=3mb,maxsize=unlimited,filegrowth=1%)log on(name='f6',filename='D:\1\f6.ldf',size=3mb,maxsize=300mb,filegrowth=1mb)
修改数据库名字语法:alter database 原数据库名字modify name=新数据库名字
给数据库添加辅助文件和日志文件alter database 数据库名字add file(name='',filename='',size=,maxsize=,filegrowth=)alter database 数据库名字add log file(name='',filename='',size=,maxsize=,filegrowth=)
删除数据库语法 ...
buu
[HCTF 2018]WarmUp拿到题目发现一张加载不出来的图片
查看源代码,发现source.php的注释
进入source.php发现是代码审计,符合一开始的提示,注意到有个hint.php,进去看看,发现flag在ffffllllaaaagggg里
返回分析代码:首先是一个checkfile()函数,1.定义了一个白名单:source.php和hint.php,判断$page是否为空、是否为字符串。只有都为true才不会返回false;2.判断$page是否在白名单里,若存在返回true;3.考虑到page有参数的情况,$_page是取出$page问号前的东西,然后再判断$_page是否在白名单里,若存在则返回true;4.如果上一步判断失败,则又考虑了url编码的问题,因为url在传入以后服务器会自动进行一次解码。因此传入二次编码后的内容,就可以使checkfile返回true。
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置mb_substr() 函数返回字符串的一部分。
接下来的判断只要file不为空,是字符串,并且能通过checkFile检 ...
ssrf
概念SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所以可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。
正常用户访问网站的流程是:输入A网站URL —> 发送请求 —> A服务器接受请求(没有过滤),并处理 —>返回用户响应
【比如有个网站请求是www.baidu,com/xxx.php?image=URL】
那么产生SSRF漏洞的环节在哪里呢?安全的网站应接收请求后,检测请求的合法性产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致A网站可以从其他服务器的获取数据
例如:
www.baidu.com/xxx.php?image=www.abc.com/1.jpg
...
攻防世界web
backup这道题考察备份文件的后缀进入链接,你知道index.php的备份文件名吗这里涉及到一个知识点:常见的备份文件后缀名有: .git .svn .swp .svn .~ .bak .bash_history挨个试一下会发现输入index.php.bak会下载下来一个文件,打开即是flag
也可以使用御剑扫描一下点开即可进入页面,后续同上
weak_auth进入链接,随便输个账号密码,发现要用admin登录大概是考弱口令,可以利用bp进行爆破随便输个密码,用bp拦截右键send to intruder,在positions里设置爆破点在payloads里载入字典,如图然后start attack,由于连接状态都是200,所以比对相应包的长度来确定爆破成功的相应包选中爆破成功的包查看其相应包,发现flag
webshell由题意index.php里已经包含了这话一句话木马,所以利用蚁剑可以直接连,输入url和密码,点击测试连接,若成功即可保存数据然后右键文件管理即可查看文件,发现flag.txt
还有一种方法:本题的一句话是<?php @eval($_POST[‘shell ...
伪协议
伪协议常常用于文件包含漏洞之中。在php中能够造成文件包含的函数有include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readfile
函数1.include函数可以放在PHP脚本的任意位置,一般放在流程控制的处理部分中。当PHP脚本执行到include指定引入的文件时,才将它包含并尝试执行。这种方式可以把程序执行时的流程进行简单化。当第二次遇到相同文件时,PHP还是会重新解释一次,include相对于require的执行效率下降很多,同时在引入文件中包含用户自定义函数时,PHP在解释过程中会发生函数重复定义问题。include载入成功后,返回1,失败则返回false。
2.require函数require函数一般放在PHP脚本的最前面,PHP执行前就会先读入require指定引入的文件,包含并尝试执行引入的脚本文件。require的工作方式是提高PHP的执行效率,当它在同一个网页中解释过一次后,第二次便不会解释。但同样的,正因为它不会重复解释 ...
http概述
一、Web页面生成原理 当我们在浏览器的地址栏中输入网址,然后点击回车,接着,浏览器就会呈现出我们需要的web界面,那么,这个界面是怎么产生的?web的界面是根据我们输入的URL(网址、地址),浏览器从服务器端获取对应的文件资源等信息,然后显示在浏览器上面。像这种通过发送请求获取服务器资源的web浏览器等,都可以称之为客户端(client)。
Web 使用一种名为 HTTP(HyperText Transfer Protocol)的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。可以说,Web 是建立在 HTTP 协议上通信的。
HTTP使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能确保数据在传输的过程中不会被损坏或产生混乱,用户在访问信息的时候不用担心其完整性。
二、Web资源1、MIME类型 网络上有着数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都打上了名为MIME类型的数据格式标签。
MIME(Multipurpose Inter ...
henu
basic rce点开题目链接
看到eval(),assert()等可以注入先看一下目录里有什么,构造?a=system(“ls”);注意分号不能少(system也可以换成passthru,ls也可以换成find —或dir)发现 出现flag了再尝试构造?a=system(“cat f111a9.php”);
结果不行,大概有过滤,那就换tac试试(tac也可以换成sort,uniq),出现结果
php变量覆盖点开链接,查看源代码
注意到extract()函数,该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。若有同名函数会出现覆盖的情况。因此,读入flag和liwu,使他们为空,构造payload:?flag=&liwu=(也可构造?liwu=&content=)
basic rce2进入链接,根据提示和eval函数,又是远程代码执行,且需要将指令输入到Rem变量里注意到preg_match函数
引号里面的正则表达式过滤了more,less,flag,head,nl,tail,tac,cat, ...
笔记
RCE RCE全称是remote command/code execute,即远程执行漏洞。
在命令注入的漏洞中,最为常见的是PHP的命令注入。
PHP命令注入攻击存在的主要原因是Web应用程序员在应用PHP语言中一些具有命令执行功能的函数时,对用户提交的数据内容没有进行严格的过滤就带入函数中执行而造成的。 在web程序中,因为业务功能需求,需要通过web前端传递参数到后台服务器上执行(特别是一些网络设备的web管理界面),但由于开发人员没有对输入进行严格的过滤,导致攻击者可以构造一些额外的“带有非法目的”的命令,欺骗后台服务器执行,造成破坏。传入的必须是有效的 PHP 代码,所有的语句必须以分号结尾。
assert()
(其他的略)
2.命令执行system(),exec(),passthru()区别:system() 输出并返回最后一行shell结果。exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。相同点:都可以获得命令执行的状态码
3.常用 ...