CTF WEB安全基础
信息泄露
(1)通过查看源码获取flag
例:index.php.bak /robots.txt
/.svn.entries (利用seay svn漏洞扫描工具)
/.git/config (利用git源码泄漏工具)
下面介绍一下用git源码泄露工具
在Git_Extract-master目录下shfit+右键打开Powershell
输入pyhon2 .\git_extract.py http://example.com/.git/config
(2)通过查看备份文件
常见的网站备份文件后缀:
tar.gz
zip
rar
bak
php~(gedit)
swp(vim源码泄露)
SQL注入漏洞
sql注入成因和使用条件
1、SQL注入的成因
就是指web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数带入了数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。
2、SQL注入漏洞的产生需要满足两个关键条件:
(1)参数用户可控:前端传入后端的参数内容是用户可控的。
(2)参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询
sql注入方法
在DVWA环境下的low级别做sql injection
不使用sqlmap工具
(1)sql有回显位的注入
常用函数
user()
database()
version()
@@datadir
concat() // concat(' ',table_name,' ',username)
group_concat()
concat_ws() //concat_ws('#',username,password)
hex() //返回十六进制
1.判断注入点
传入SQL语句可控参数分为两类
- 数字类型,参数不用被引号括起来,如?id=1
- 其他类型,参数要被引号扩起来,如?name=“phone”
判断某个链接是否存在SQL注入,可以通过对其传入的可控参数进行简单的构造,通过服务端返回的内容来判断有无注入
其他类型
构造测试 预期结果 变种
a'# //触发错误,返回数据库错误
a' or '1'='1# //永真条件,返回所有记录 a') or ('1'=1
a' or '1'='2# //空条件,返回原来相同结果 a') or ('1'=2
a' and '1'='2# //永假条件,不返回记录 a') and