WeChall 入门练习
Get Sourced
- 检查网页源代码,滑到最下面得到答案
html_sourcecode
ASCII
- 给了ASCII的整数子,将其转换为对应的字符即可
Encodings: URL
- 得到一个url编码的字符串,将其转换为Unicode编码的到一个url
- 这道题不用提交答案,只需在登录状态下访问获取到的url即可,前面加上
https://www.wechall.net/
Stegano I
- 下载了一张图片,用ue打开,使用16进制模式查看得到答案
steganoI
WWW-Robots
- 介绍了robots协议,访问
https://www.wechall.net/robots.txt
的到一个链接, - 访问这个链接https://www.wechall.net//challenge/training/www/robots/T0PS3CR3T/,直接完成本题。
Crypto - Caesar I
考察凯撒密码,没给key,那就暴力破解,写个demo
答案不分大小写:
dopghdbpdfsl
PHP 0817
- 考察本地文件包含漏洞
- 构造
index.php?which=solution
即可,即访问http://www.wechall.net/challenge/php0817/index.php?which=solution - 看了大佬的题解还是有点不明白,应该先了解一下php了.
Prime Factory
- 感脚这道题不是考网安的啊,emmmmmm
- 写程序,求大于100万的素数且各数字之和也是素数的数
- 答案
10000331000037
- 答案
MySQL I
- 一道简单的考察sql注入的题,答案不唯一,关键点在于
- 对于用户的输入没有任何的检测
- https://blog.csdn.net/github_36032947/article/details/78442189 这篇博客讲的挺清楚的,可以看看
- 答案不唯一
Username:admin'#
Password:123
Username:admin' or '1'='1
Password:123
Zebra
一张斑马的图片,这不就是条形码码,ps打开,将图形的部分移动使条纹可以用一条直线穿过
截取最长的部分
随便找一个条形码识别网站比如这个,整进去的到答案
saFFari
Stegano Attachment
下载了一张以php结尾的图片,直接将后缀改为png,用Stegsolve,试了一遍也没有看出来什么。
直接用
winhex
打开,拖到最后发现了里面有一个名为solution的文件,初步判断应该是有一个压缩包附在了图片的后面,zip文件的文件头标识是:
504B0304
,jpeg文件的标识头是FFD8FF
,结尾标识是FFD9
将从
504B0304
到最后的选中右键编辑复制选快到新文件并保存为.zip
的文件,解压打开得到solution.txt, 里面就有答案RLGIGOGSOICB
duang ,duang duang …………..看到有位博主说不用另存文件,直接将源文件用winrar打开,可以直接得到解压后的结果,emmmmm, giao
Crypto - Transposition I
终于有道题可以让我说出 so easy,hahahaha。
oWdnreuf
, 这不就是wonderful
吗,没错就是每两个字母调换位置,把他们换回来就行了代码
a = "oWdnreuf.lY uoc nar ae dht eemssga eaw yebttrew eh nht eelttre sra enic roertco drre . Ihtni koy uowlu dilekt oes eoyrup sawsro don:wa fpsolmgfdd.o" a = list(a) s = "" for i in range(0, len(a), 2): s += a[i+1] s += a[i] print(s) # Wonderful. You can read the message way better when the letters are in correct order. I think you would like to see your password now: apfosmlfgddo.
答案
apfosmlfgddo
hi(Math)
- 就是一个等差数列, a1 = 2, a2 = 3, a3 = 4 ,a_n = n + 1, s_n = (a_n + 2) * n / 2;
- 题中的n的值为
17591026060781
- 使用win10自带的编辑器,的出答案
154722098935564539692256152
Warchall - The Beginning
根据题意应该是链接linux服务器,从服务器获取答案。输入链接服务器的密码的到的到链接服务器的信息
ssh -p 19198 asdfak@warchall.net
链接服务器,输入我们设置的密码。查看当前目录的文件,
level 文件夹, WELCOME.txt 的文件
WELCOME.txt
说了一大堆欢迎的话,告诉我们应该去
/home/level
或者/home/user/yournick/level
,后者实际上就是我们自己的用户目录,即~/level
。浏览文件夹,发现1,2,3在第一个文件夹,4,5在后一个文件夹。level0
查看0文件夹下的文件,
README.txt
格外显眼,打开的到level0:bitwarrior
, 此处应该注意的是,文件告诉你答案的格式solution 就是文件告诉你flag的关键词,很重要。
level1
查看
/home/level/1
文件夹下的文件,有文件夹有文件,一个一个打开太慢了,使用grep -rn solution
递归地寻找当前目录下的所有文件名或者内容中出现solution的情况(隐藏文件/文件夹也会查找)level2
还是查看
/home/level/2
下的文件,不过这次要答案在隐藏文件里,使用ls -a
可以查看所有文件。还是使用grep -rn solution
找到solution:flag 在 隐藏文件夹
/home/level/2/.porb/
的隐藏文件.solution
里面level3
老办法,没啥难度,找到flag 在
/home/level/3
下的隐藏文件.bash_history
里面level4
回到自己的用户目录下的level文件夹
cd ~/level
。进入~/level
下的0文件夹,查看其下的文件。有个README.txt
文件,cat README.txt
打开文件,显示没有权限。我没有权限,谁有权限,查看
ls -l
文件权限列表这不就是我的文件吗,只是没有开启可读权限,打开权限
chmod 700 README.txt
, 然后查看文件cat README.txt
。得到level5
进入文件夹
~/level/5
查看文件cat README.txt
, 发现让我们保护这个文件夹,那就清除别的用户的权限,先查看这个文件夹的权限,回到主目录
~
,ls -l
查看权限drwx---r-x 5 asdfak asdfak 4096 Sep 14 09:59 level
清除别的用户的权限相当于,将让其可以为我们所使用。执行
chmod 700 level
, 答案在不经意之间出现在了,在~/level/5
文件夹下出现了一个solution.txt
的文件,获取读取权限,然后查看文件最后答案
bitwarrior,LameStartup,HiddenIsConfig,RepeatingHistory,AndIknowchown,OhRightThePerms
wp 写的过程还是比较艰辛,比较负载,小白有点心累。加油呀o(^▽^)┛。
Register Globals
这道题我是一直想通过post的方式对全局变量进行修改,从而忽略了php代码的执行顺序,由于么个判断时独立的,而获取答案的判断条件与前面的post获取变量的条件是不相关的。
全局变量覆盖
要利用Register Global的漏洞
漏洞的大致内容如下:
由于php变量不用初始化的问题并且设置了register_global=ON的情况下,导致php中的变量可以直接通过页面的表单,cookie等进入程序中。
实例
<?php echo "Register_globals: ".(int)ini_get("register_globals")."<br/>"; if ($auth){ echo "private!"; } ?>
当Register Global为OFF时代码不会出现问题,但当register_golbal=ON时,提交请求URL
xxx.php?auth=1
的结果为:Register_globals: 1
private!;
但如果上述程序中已经设置了auth=0,那么即使url中包含auth=1,也不会出现变量的覆盖,即不会大衣橱private;
通过$GLOBALS获取的变量,也可能导致变量覆盖
<?php echo "Register_globals:".(int)ini_get("register_globals")."<br/>"; if (ini_get('register_globals')) foreach($_REQUEST as $k=>$v) unset(${$k}); print $a; print $_GET[b]; ?>
上面的程序变量$a未初始化,在register_globals=ON时,在尝试控制$a的值(xxx.php?a=1&b=2),会因为这段代码而出错。
而当尝试注入“GLOBALS[a]”来覆盖全局变量的值时(xxx.php?GLOBALS[a]=1&b=2),则可以成功控制$a的值,这是因为unset()默认只会销毁局部变量,要销毁全局变量必须要使用$GLOBALS。而在register_globals=OFF时,则无法覆盖到全局变量。
总结:register_globals的意思是注册为全局变量,所以当On的时候,传递过来的值会被直接注册为全局变量而直接使用,当为OFF的时候,就需要到特定的数组中去得到它。unset用于释放给定的变量
题解
查看题目给的php代码,发现register_globals的为on,表示我们可以通过提交url地址来设置全局变量
往下面看发现只要login[0]=’admin’ 便可以成功以admin登录,而前面的 if 里面的login初始化由于我们post的密码一定是错误的随意并不会执行
所以直接访问
https://www.wechall.net/challenge/training/php/globals/globals.php?login[0]=admin
即可通过本题。admin不要加引号。。。。。