WeChall 刷题

WeChall 入门练习

题目链接

Get Sourced

  • 检查网页源代码,滑到最下面得到答案
    • html_sourcecode

ASCII

  • 给了ASCII的整数子,将其转换为对应的字符即可

Encodings: URL

  • 得到一个url编码的字符串,将其转换为Unicode编码的到一个url
  • 这道题不用提交答案,只需在登录状态下访问获取到的url即可,前面加上https://www.wechall.net/

Stegano I

  • 下载了一张图片,用ue打开,使用16进制模式查看得到答案steganoI

WWW-Robots

Crypto - Caesar I

  • 考察凯撒密码,没给key,那就暴力破解,写个demo

  • 答案不分大小写:dopghdbpdfsl

PHP 0817

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。得到

  • Linux 文件权限指令

  • 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时,提交请求URLxxx.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不要加引号。。。。。


   转载规则


《WeChall 刷题》 子实 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录