xff_referer、simple_js(javascript代码审计+超详细脚本编写过程)

简介: xff_referer、simple_js(javascript代码审计+超详细脚本编写过程)

1、xff_referer


首先我们应该知道题目中的XFF和referer是什么:


① X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段,它代表客户端,也就是HTTP的请求端真实的IP。


这一HTTP头一般格式如下:


X-Forwarded-For: client1, proxy1, proxy2, proxy3


其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。


在上面这个例子中,这个请求成功通过了三台代理服务器:proxy1, proxy2 及 proxy3。请求由client1发出,到达了proxy3(proxy3可能是请求的终点)。请求刚从client1中发出时,XFF是空的,请求被发往proxy1;通过proxy1的时候,client1被添加到XFF中,之后请求被发往proxy2;通过proxy2的时候,proxy1被添加到XFF中,之后请求被发往proxy3;通过proxy3时,proxy2被添加到XFF中,之后请求的的去向不明,如果proxy3不是请求终点,请求会被继续转发。


② http referer 是header的一部分 ,在浏览器向web服务器发送请求的时候,一般都会带上refere,告诉服务器我是从哪个页面链接来的。


比如我在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有: Referer=http://www.google.com


如果是CSRF(跨站请求伪造)传来的请求,refere字段就会是包含恶意网址的地址,服务器就能识别出恶意访问。


打开这道题的链接,要求IP地址必须为123.123.123.123

使用 BurpSuite抓包,在action中将包发到repeater

来到repeater中,根据上面格式添加指定IP:X-Forwarded-For:123.123.123.123

注意这里需要添加在Connection: close之前,否则tcp链接在请求处理完毕后就已经被断掉了

send后得到响应,发现还需要来自谷歌,使用referer

添加 Referer: https://www.google.com,点击send得到响应,拿到flag

cyberpeace{78368835db6caa85b4d601f602db444a

2、simple_js

打开链接就提示输入密码

随便输入,被提示是假的密码


先介绍一些东西:

①  HTML代码简化结构:

 <html>                                                  //HMTL文件的开始
        <head>                                                //头部开始
        <title>网页标题</title>                         //网页标题
        </head>                                               //头部结束
        <body>                                                 //主体开始
        这是我的第一个HTML网页                           //主体内容
        </body>                                                 //主体结束
</html>

② 在javascript中,alert的用法是 alert(在对话框中显示的纯文本) ,alert() 方法用于显示带有一条指定消息和一个确认按钮的警告框,可以用来向用户警示信息,也可以用来调试程序。

<script>
function myFunction(){
    alert("你好,我是一个警告框!");
}
</script>
③ <script> 标签用于定义客户端脚本,比如 JavaScript。HTML 中的 Javascript 脚本代码必须位于 <script> 与 </script> 标签之间,可被放置在 HTML 页面的 <body> 和 <head> 部分中。
<script>
alert("我的第一个 JavaScript");
</script>

查看源码,发现无论输入什么都是假密码,都会返回 FAUX PASSWORD HAHA


发现return pass,而pass = p,p是tab2数组的每一个ASCII码转换的字符,tab2来自于pass数组,也就是说,不管传入的pass_enc参数是什么,最后返回的都是pass数组的数字转换成的字符串。

fromcharcode()相当于Python的chr(),end=''就是不换行,默认是end='\n'(会换行)

这里密码藏在后面这句  String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30")


用Python编写脚本(超详细):


① 用括号内数据定义一个str类(str即string参数的类型),定义的时候用单引号或者双引号string="\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"


我们直接输出它,可以看到string本来就是一个带有逗号的字符串

 

② 使用split函数,以逗号为标识符,将string转换成数组(或者叫列表),并赋值给s

s = string.split(",")

我们输出s看看

③ ASCII 表

c = ""      //定义c为一个空字符串

for i in s:      //遍历s列表的数据

i = chr(int(i))      //将每一个数据转换为ASCII字符(字符转ASCII码用ord())

c = c+i      //添加到字符串c后面

print(c)      //输出c

合起来最终脚本为:

string="\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"
s = string.split(",")
c = ""
for i in s:
    i = chr(int(i))
    c = c+i
print(c)

得到  786OsErtk12

故flag为  Cyberpeace{786OsErtk12}

目录
相关文章
|
16天前
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
62 32
|
2月前
|
JavaScript 前端开发
【JavaScript】——JS基础入门常见操作(大量举例)
JS引入方式,JS基础语法,JS增删查改,JS函数,JS对象
|
3月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
3月前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式
|
3月前
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
3月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
4月前
|
人工智能 JavaScript 前端开发
使用Node.js模拟执行JavaScript
使用Node.js模拟执行JavaScript
48 2
|
4月前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具
|
4月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
46 0
|
存储 JavaScript 前端开发
JavaScript与PHP中正则
有个在线调试正则的工具,点击查看工具。下面的所有示例代码,都可以在codepen上查看到。
JavaScript与PHP中正则

热门文章

最新文章