代码审计

补充一个,之前在说XSS的输入检查的时候,这种方式是有局限性的,因为输入的XSSfilter无法理解输出的语境,对一些符号的处理可能会改变用户数据的原意,并且,针对一些特定输出点可能起不到正确的防御作用。然后这篇的内容是想把代码审计的一个大体思路和一些注意的地方记录一下。 目录 代码审计思路 首先,我们在对一个系统进行审计过程之前,最好在本地搭建一个应用,然后对功能有个大体上的了解。然后接下来会描述一下几种不同的审计思路。 从功能方向上的审计思路 从index、webxml等入口页面开始 寻找加载的配置文件,如conf、inc、ini、敏感xml文件等 寻找功能实现点 从功能点中找到参与实现的函数 函数中是否含有敏感方法的调用 调用过程中参数是否可控,参数是否通过安全函数,以及安全函数对应此功能点是否合适 数据有无二次使用,在二次使用中是否做了相应的安全措施 从数据流向上的审计思路 用户可控变量在应用的什么位置被获取 该变量参与了什么功能的实现,将涉及变量的所有函数找全 参与的函数中是否含有敏感方法 如为敏感方法对应数据是否做了安全措施 注意普遍验证过程中参数的...»

SQL注入的攻击与防御

SQL注入和XSS的相似之处在于,其都是因为data和code没分离开所引起的安全问题,这里有两个利用条件,一个是数据用户能控制,一个是数据和程序的代码进行的拼接。在这里把知道的内容总结补充一下。 目录 盲注 Boolean-Based型 构造简单的条件语句,通过返回页面的内容是否产生变化,来判断SQL语句是否得到了执行。 Time-Based型 通过条件语句无法看出异常,因此用benchmark,if-sleep函数,或者构造大联合查询表,来通过延时的状况,判断出注入语句是否执行成功,属于一种边信道攻击。 报错注入 在有错误信息回显的页面中,通常使用floor,ExtractValue,UpdateXml三个函数引起报错,在其中加入我们要查询的内容获取数据。除此之外,对应不同MYSQL版本还有其余的函数可用,可以在网络上搜索一下。 宽字节注入 在之前的反思中有提到过,再复制粘贴一下= = 由于character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_conv...»

kafkatao kafkatao 分类:学习记录 标签:none

XSS与CSRF的防御

之前在面试的总结中简单的提到了XSS的区分和CSRF的防御手段,现在补一篇学习记录,关于XSS和CSRF的防御手段。 XSS的防御措施 输入输出检查方式 输入检查:对用户输入的数据进行合法性检查,对输入数据中敏感字符进行过滤编码转义,针对特定类型数据进行格式检查。除格检查外的防御最好放在服务器端实现。 输出检查:对会输出到页面、脚本中的数据做编码转义操作,如果输出是变量,尽量保证输出的变量在引号的内部。 根据输出点分类防御 输出在HTML标签中: 针对在<div>$a</div>标签中输出的内容,我在测试的时候一般是直接构造攻击性标签进行测试,防御方法是对数据进行HTML编码。 输出在HTML属性中: 如<a href="$a">这种,在测试的时候会去闭合属性字符串,然后在后半部分加入我们的标签或事件,防御方法是也对数据进行HTML编码。 在HTML标签事件中: 如<input onclick="func($a)" />,这种输出点可以直接引入js代码,因此应当进行Javascr...»

kafkatao kafkatao 分类:学习记录 标签:none

关于阿里面试的反思(1)

这周阿里的电话面试终于来了,然,并没有做好准备。。。现在先把阿里面试过程中的部分答案内容做下总结反思。之后一段时间应该会细致地过一遍基础吧。嗯。 同源策略 同源策略限制不同源对当前document的属性内容进行读取或设置。 不同源的区分:协议、域名、子域名、IP、端口,以上有不同时即不同源。 DOM型和反射型的区别是什么,根本区别是什么?如果针对DOM型XSS做扫描器,怎么去做,人工确认DOM型XSS,怎么去确认。给客户做XSS的时候,怎么提修补建议? DOM型和反射型的区别 反射型XSS:通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。 反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。 DOM型:通过修改页面的DOM节点形成的XSS。 DOM-based XSS由于是通过js代码进行dom操作产生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。 根本区别在我看来是输出点的不同。 对于XSS怎么提修补建议 输入点检查:对用户输入的数据进行合法性检查,使用filter过滤敏感字符或对进行编码转义...»

CCTF-2017-WEB部分Writeup

签到题 302跳转,burp抓包,直接页面获得flag 少年,你真的会ping吗? 一进去,通过对127.0.0.1进行ping测试下结果 发现是调用了ping命令并将内容回显到页面上,想到%0a换行来达到多个系统命令的执行,试了试 结果成功,这里有个小坑,cat被过滤掉了,使用head和more命令都可以获取文本内容,没有迭代过滤cat重复也可以绕过 WEB350 查看页面源代码,代码审计题目 if(isset($_POST['login'])) { if(isset($_POST['user'])) { if(@strcmp($_POST['user'],$USER))//USER是被隐藏的复杂用户名 { die('user错误!'); } } if (isset($_POST['name']) && isset($_POST['password'])) ...»

kafkatao kafkatao 分类:ctf-writeup 标签:none