mirror of
https://gitee.com/gaohongy/code-audit.git
synced 2026-07-16 08:23:50 +00:00
完成第三章的修正
This commit is contained in:
@@ -52,14 +52,23 @@ http://localhost:8081/2020CodeAudit/C4/4-1-1-1-SQL.php?id=-1 union select 1,user
|
||||
?id=-1' and 1=1%23
|
||||
```
|
||||
|
||||
%23 表示特殊字符#
|
||||
%23 是16进制,表示特殊字符#
|
||||
|
||||
MySQL 运行的 SQL 语句为
|
||||
那么MySQL 运行的 SQL 语句为:
|
||||
|
||||
```
|
||||
select * from user where id= ' -1\' and 1 = 1#'
|
||||
```
|
||||
|
||||
[addslashes](https://www.php.net/manual/zh/function.addslashes.php)函数:
|
||||
|
||||
> 返回需要在转义字符之前添加反斜线的字符串。这些字符是:
|
||||
>
|
||||
> - 单引号(`'`)
|
||||
> - 双引号(`"`)
|
||||
> - 反斜线(`\`)
|
||||
> - NUL(NUL 字节)
|
||||
|
||||
很明显这是没有注入成功的,我们提交的单引号被转义导致没有闭合前面的单引号。
|
||||
|
||||
但是我们提交:
|
||||
@@ -120,6 +129,10 @@ http://localhost:8081/2020CodeAudit/C4/4-1-1-2-SQL-GBK.php?id=%df' union select
|
||||
结果:Array ( [0] => 1 [1] => 2 [2] => root@localhost [3] => 4 )
|
||||
```
|
||||
|
||||
注意,为什么是'運\\\\'有两个斜杠?可能你的PHP环境中配置了 **magic_quotes_gpc** ,会自动为GET或者是POST提交的数据前面增加反斜杠转义。
|
||||
|
||||
|
||||
|
||||
防范:
|
||||
|
||||
1. 在执行查询之前先执行 SET NAMES ‘gbk’,character_set_client=binary
|
||||
@@ -147,13 +160,25 @@ http://localhost:8081/2020CodeAudit/C4/4-1-1-2-SQL-GBK.php?id=%df' union select
|
||||
http://localhost:8081/2020CodeAudit/C4/4-1-1-2-SQL-urlcode.php?p=1%2527
|
||||
````
|
||||
|
||||
运行结果:
|
||||
- %25 对应字符 %
|
||||
|
||||
这个时候就出现了问题。PHP首先会对传递过后的URL进行自动解码,解码后得到的请求字符串是:
|
||||
|
||||
```
|
||||
p=1%27
|
||||
```
|
||||
|
||||
这时如果再使用 urldecode ,相当于对url进行了二次解码,%27再解码表示字符 ' 。因此该漏洞叫做**二次 urldecode 注入**,其实是解码了两次。
|
||||
|
||||
因此运行结果:
|
||||
|
||||
```
|
||||
$a=1%27
|
||||
$b=1'
|
||||
```
|
||||
|
||||
注意:代码中的 addslashes 函数其实没有作用,因为url中没有包含需要 addslashes 处理的字符。
|
||||
|
||||
### 1.2.3. espcms搜索注入分析
|
||||
|
||||
漏洞在 interface/search.php 文件和 interface/3gwap_search.php 文件 in_taglist()函数都存在。
|
||||
@@ -199,8 +224,6 @@ http://localhost:8081/espcms/index.php?ac=search&at=taglist&tagkey=a%2527,tags)
|
||||
|
||||
/admin/admin_link.php 部分代码:
|
||||
|
||||
|
||||
|
||||
```php
|
||||
// 。。。
|
||||
require_once(ADMIN_ROOT_PATH.'include/admin_link_fun.php');
|
||||
@@ -269,12 +292,16 @@ logo地址输入:
|
||||
1 onerror=alert(1)
|
||||
```
|
||||
|
||||
r是字母r的HTML实体编码。
|
||||
“r ;“是字母r的HTML实体编码。
|
||||
|
||||
其实意思是:
|
||||
|
||||
1 onerror=alert(1)
|
||||
|
||||
> onerror可以用于不同的对象,比如window对象、img元素或者其他资源加载的元素。当这些对象发生错误时,会触发onerror事件。例如,当图片加载失败时,img的onerror事件会被触发,可以执行一些回调函数,比如替换图片或者记录错误。
|
||||
>
|
||||
> 另外,onerror还可以用于资源加载,比如link、script、img等标签。例如,当script标签加载失败时,onerror事件会被触发,可以用来动态加载备用脚本。
|
||||
|
||||
登录后台:
|
||||
|
||||
```
|
||||
@@ -378,4 +405,6 @@ Token翻译中文为“标志”,在计算机认证领域叫令牌。利用验
|
||||
http://localhost/2020CodeAudit/C4/token/4-3-2-1-Token.php
|
||||
```
|
||||
|
||||
问题:什么是session,工作原理是什么?cookie 又是什么?session 和 cookie 有什么联系?
|
||||
问题:什么是session,工作原理是什么?cookie 又是什么?session 和 cookie 有什么联系?
|
||||
|
||||
> todo: 可能需要补充 cookie 和 session 的知识!
|
||||
Reference in New Issue
Block a user