代码中定义了一个SqlChecker全局的类,强制处理所有用户传参,找注入这个方向有有点难啃了
系统用户信息遍历
找到/api/user/getusers接口
接口没有做鉴权,构造请求包发送,返回包返回系统所有用户信息
其中用户信息包括姓名、出生日期、微信账号、手机号码、邮箱、密码等等
伪造jwt_token获取系统管理员-拿下靶标
源码获取到jwt_token的secret
但是该secret不是可读性文本,估计是随机生成的byte字节序列,因此不能自行使用cyberchief或者其他工具将token直接生成
这里有个坑点:开始是使用gpt生成的脚本进行secret的读取和token的生成,发现gpt在处理字节上面有点问题,生成的jwt_token不能使用,于是自行编写了个py脚本进行jwt_token的构造,首先我们将字节序列做16进制的转化,为了python能够使用bytes.fromhex()函数读取16进制化的secret,然后根据上面读出的用户信息,伪装admin账号身份,并设置一个较长的ExpireTime
拿到jwt_token之后,要如何使用才能拿到后台呢,这里首先要明白该系统的登录鉴权机制
由于他存在注册功能,我们便可在自行注册一个账号,然后进行登录,查看认证处理流程
从数据包里面得知,登录成功后会返回jwt_token和一些与用户相关的一些信息,前端会根据返回的身份信息,跳转到对应的页面,并且功能接口都会带上jwt_token进行请求以便获取系统数据
了解清楚后,就开始进行身份伪造,首先去后台登录系统
将登录返回包的内容替换为管理员账号的token(从python脚本中生成)和管理员用户的身份信息
通过鉴权后,终于成功获取管理员后台,靶标5000分到手,哈哈
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
系统用户信息遍历
找到/api/user/getusers接口
接口没有做鉴权,构造请求包发送,返回包返回系统所有用户信息
其中用户信息包括姓名、出生日期、微信账号、手机号码、邮箱、密码等等
伪造jwt_token获取系统管理员-拿下靶标
源码获取到jwt_token的secret
但是该secret不是可读性文本,估计是随机生成的byte字节序列,因此不能自行使用cyberchief或者其他工具将token直接生成
这里有个坑点:开始是使用gpt生成的脚本进行secret的读取和token的生成,发现gpt在处理字节上面有点问题,生成的jwt_token不能使用,于是自行编写了个py脚本进行jwt_token的构造,首先我们将字节序列做16进制的转化,为了python能够使用bytes.fromhex()函数读取16进制化的secret,然后根据上面读出的用户信息,伪装admin账号身份,并设置一个较长的ExpireTime
拿到jwt_token之后,要如何使用才能拿到后台呢,这里首先要明白该系统的登录鉴权机制
由于他存在注册功能,我们便可在自行注册一个账号,然后进行登录,查看认证处理流程
从数据包里面得知,登录成功后会返回jwt_token和一些与用户相关的一些信息,前端会根据返回的身份信息,跳转到对应的页面,并且功能接口都会带上jwt_token进行请求以便获取系统数据
了解清楚后,就开始进行身份伪造,首先去后台登录系统
将登录返回包的内容替换为管理员账号的token(从python脚本中生成)和管理员用户的身份信息
通过鉴权后,终于成功获取管理员后台,靶标5000分到手,哈哈
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
我们看到了一个input,还有一个check button,很明显,我们首先就需要去找check button的id&注册函数。
xspy-MFC分析
check按钮的id为03e9,同时窗口存在OnCommand: notifycode=0000 id=03e9,func= 0x00C72420(Junk_Instruction.exe+ 0x002420 )函数。那么对应的check逻辑肯定在基址+偏移0x002420处。打开ida,找到check函数 sub_402420
可以看到有一个条件判断:if ( (unsigned __int8)sub_402600(v2 + 16) )。一眼顶针,两个分支分别是弹出正确和错误的对话框,为什么呢?if else函数体内容基本一样。当然我们还是动态调试一下
所以enc函数很明显就是sub_402600这个函数中就出现了很多垃圾指令了,也就对应上题目名称Junk_instruction了。
去花-IDA分析
爆红花指令,经典call $+5起手,就是先用一个call压好返回地址,再把栈里的返回地址弹出来,改一下,压回去,如此反复。去掉也很简单,我们把下述累死指令块全部nop掉即可,有好几处,一模一样。
当然,我们使用idapython脚本自动去花
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
xspy-MFC分析
check按钮的id为03e9,同时窗口存在OnCommand: notifycode=0000 id=03e9,func= 0x00C72420(Junk_Instruction.exe+ 0x002420 )函数。那么对应的check逻辑肯定在基址+偏移0x002420处。打开ida,找到check函数 sub_402420
可以看到有一个条件判断:if ( (unsigned __int8)sub_402600(v2 + 16) )。一眼顶针,两个分支分别是弹出正确和错误的对话框,为什么呢?if else函数体内容基本一样。当然我们还是动态调试一下
所以enc函数很明显就是sub_402600这个函数中就出现了很多垃圾指令了,也就对应上题目名称Junk_instruction了。
去花-IDA分析
爆红花指令,经典call $+5起手,就是先用一个call压好返回地址,再把栈里的返回地址弹出来,改一下,压回去,如此反复。去掉也很简单,我们把下述累死指令块全部nop掉即可,有好几处,一模一样。
当然,我们使用idapython脚本自动去花
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
👍1
jwt伪造身份
首先是拿到靶标的清单
访问系统的界面,没有什么能利用的功能点
首先进行目录扫描,扫描发现存在xxx.zip的文件放置在web目录上
一般zip文件大部分情况都是开发运维人员做系统维护时留下的备份文件,在系统上线后并没有将其删除,于是底裤(即源代码)都直接给到了攻击者
拿到源码后的第一个思路是寻找文件上传漏洞
果不其然在源码中找到uploadimg接口,发现未对上传的文件格式进行过滤
实际访问接口发现,怎么改变文件格式、文件内容、Content-Type、还是各种变种传输都无济于事。
返回包永远是{"Status":1,"Data""null}
运维实在是坏呀~
来到这一步都以为是一路高歌,轻松拿下,没想象到是跌宕起伏伏伏伏伏......
先使用wget下载zip文件,文件总共200+mb,很有概率是源代码的打包
从文件内容可判断,该系统是使用的.net开发,可通过dnspy进行审计
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
首先是拿到靶标的清单
访问系统的界面,没有什么能利用的功能点
首先进行目录扫描,扫描发现存在xxx.zip的文件放置在web目录上
一般zip文件大部分情况都是开发运维人员做系统维护时留下的备份文件,在系统上线后并没有将其删除,于是底裤(即源代码)都直接给到了攻击者
拿到源码后的第一个思路是寻找文件上传漏洞
果不其然在源码中找到uploadimg接口,发现未对上传的文件格式进行过滤
实际访问接口发现,怎么改变文件格式、文件内容、Content-Type、还是各种变种传输都无济于事。
返回包永远是{"Status":1,"Data""null}
运维实在是坏呀~
来到这一步都以为是一路高歌,轻松拿下,没想象到是跌宕起伏伏伏伏伏......
先使用wget下载zip文件,文件总共200+mb,很有概率是源代码的打包
从文件内容可判断,该系统是使用的.net开发,可通过dnspy进行审计
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
❤2
该指令格式在CTF和攻防对抗中经常出现,可以提高执行效率的同时也可以增加逆向的难度。
对于此类指令和题目,我们分析的方法是:遇到查意思,查的多了就跟看正常代码一样,采用动态分析。
机器码修改
将内置的机器码改为题目给的:1653643685031597
修改成功:得到flag的时候跟machine这个有很大关系。
machine_id处理,在这个加密函数中,发现了MD5特征
经过动调拿到函数加密后的结果,与我们的猜测是相符的
可以发现最终md5(机器码)变成,user_id处理和调试machine加密一样,最终MD5(user_id)变成这个数字:1228240365737281
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
对于此类指令和题目,我们分析的方法是:遇到查意思,查的多了就跟看正常代码一样,采用动态分析。
机器码修改
将内置的机器码改为题目给的:1653643685031597
修改成功:得到flag的时候跟machine这个有很大关系。
machine_id处理,在这个加密函数中,发现了MD5特征
经过动调拿到函数加密后的结果,与我们的猜测是相符的
可以发现最终md5(机器码)变成,user_id处理和调试machine加密一样,最终MD5(user_id)变成这个数字:1228240365737281
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke