WEB学习1-bugku-web - ZhouYetao

WEB学习1-bugku-web

今天开始正式接触web,一开始也不知道该看些啥,那就从做题目开始吧,边做边看,沿袭之前做pwn的时候的思想。这边我选择的是bugku的web题,这个对新手来说比较友好。
web2
url进去之后,发现满屏的笑脸,看得头疼,23333。
那就看看源码吧,
1562139353(1).png

这边看着很复杂 其实只需要ctrl+f搜索一下flag就好了,直接找到了flag;
计算器
这题就是一个计算,但是发现在输入结果的时候只能输入一位,那肯定是不能拿到flag的呀,所以直接修改源码,将maxlength修改成2,
1562139579(1).png

然后将计算的结果输入就可以得到flag了;
web基础$_GET
这个题有两个做法,一个是直接对url进行编辑,还一个是用脚本解决:
第一种:

$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

这是网站给出的源码,不难理解,需要在后面修改一下get的数据,将what的内容置为flag,所以直接在url后面加上/?what=flag就可以得到flag了;
第二种:
可以用python的request库对其解决:

#!/usr/bin/env python
# encoding: utf-8
import requests

s = requests.Session()
url = "http://123.206.87.240:8002/get/"
#r = s.get(url)
values = {'what':'flag'}
r = s.get(url,params = values)
print(r.text)

web基础$_POST

$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

和之前的get的题其实是一样的,但是修改了一下传参的方法,这个题同样也是有两个做法,一个是使用firefox的hackbar插件进行操作,但是现在最新版的firefox好像要收费了emmmm,那就这里只用脚本吧,果然还是要会写脚本的:

#!/usr/bin/env python
# encoding: utf-8
import requests

s = requests.Session()
url = "http://123.206.87.240:8002/post/"
r = s.get(url)
values = {'what':'flag'}
r = s.post(url,values)
print(r.text)

矛盾

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

审计代码,通过get得到num,is_numeric()这个函数是判断传进去的参数是否是纯数字字符串,如果是,就返回1,如果不是就返回0,所以,在第一个if判断的地方,要救$num是一个非纯数字字符串,但是在第二个if中,需要num为1才返回flag,所以在这里就产生了矛盾,这边可以利用==判断的漏洞,在这个if比较中,一旦碰到非数字的就会自动截断,所以我们只要传入的$num的第一位是1,后面跟一位非数字,就可以完成绕过判断,拿到flag。这题网上很多的教程有说是要利用%00截断这个漏洞,但是其实不是,不管是在1后面跟上%00还是字符都是可以完成绕过的,给出exp:

#!/usr/bin/env python
# encoding: utf-8
import requests

s = requests.Session()
url = "http://123.206.87.240:8002/get/index1.php"
payload = "?num=1a"
r = s.get(url+payload)
print(r.text)

web3
这边打开之后,有数不尽的弹窗,当然如果有弹窗拦截这个插件的话,那你啥都没有23333,ctrl+u打开源码,果然发现了好多的alert(**),把窗口拉到最后,发现了一串神秘的字符<!--&#75;&#69;&#89;&#123;&#74;&#50;&#115;&#97;&#52;&#50;&#97;&#104;&#74;&#75;&#45;&#72;&#83;&#49;&#49;&#73;&#73;&#73;&#125;-->这个可以自己写脚本ascii转换成字符串,具体的替换可以在txt中或者sublime中执行,最后的转换脚本:

#!/usr/bin/env python
# encoding: utf-8
a = [75, 69, 89, 123, 74, 50, 115, 97, 52, 50, 97, 104, 74, 75, 45, 72, 83, 49, 49, 73, 73, 73, 125]
flag = ""
for i in range(len(a)):
    flag += chr(a[i])
    
print flag

域名解析
这题需要用到域名解析,使用的方法是通过修改虚拟机的域名解析,我是在Ubuntu中实现的:
1、修改host文件

sudo gedit /etc/hosts

2、添加题目所说的域名解析
1562141721(1).png

然后直接访问题目给的地址flag.baidu.com就可以拿到flag了。今天暂时做了这些题,总结一下,做题的时候可以看网上的wp,但是不能一味的抄,因为网上的wp不一定是全部正确的,就比如这边的矛盾这题,网上有些wp还是有一些错误的,另外,web真有趣,以前看pwn的时候说这辈子不会看web的,不可能当web狗的,现在,昂~真香。

Leave a Comment

@author:ZhouYetao
© 2020 Copyright.  | Power by Mijiu                                                                                               
本站已安全运行 700 天